• 数据工具的使用


    1.线型回归

    import numpy as np
    import matplotlib.pyplot as plt
    
    def f(x):
        return np.sin(x)+0.5*x
    
    x = np.linspace(-2*np.pi,2*np.pi,50)
    '''
    # 画图
    plt.plot(x,f(x),'b')
    plt.show()
    '''
    
    # 回归
    reg = np.polyfit(x,f(x),deg=1)    # 拟合命令 deg 多项式的次数
    ry  = np.polyval(reg,x)           # 根据拟合方程,返回拟合值
    
    # 画图
    plt.plot(x,f(x),'b',label="f(x)")
    plt.plot(x,ry,'r.',label="regression")
    plt.legend(loc=0)
    plt.show()

    1.1 当deg改为5或者7时候

    # 回归结果评价
    print(np.allclose(f(x),ry))     # 看两个结果是否相同
    print(np.sum((f(x)-ry)**2)/len(x))  # 平均误差

    2.基函数

    # 基函数求解
    matrix = np.zeros((3+1,len(x)))   # 先来一个矩阵,3是多项式的次数,1是常数项。列数是x的次数
    matrix[3,:] = x**3
    matrix[2,:] = x**2
    matrix[1,:] = x
    matrix[0,:] = 1
    
    reg2  = np.linalg.lstsq(matrix.T,f(x))[0]
    ry = np.dot(reg2,matrix)
    '''
    # 画图
    plt.plot(x,f(x),'b',label="f(x)")
    plt.plot(x,ry,'r.',label="regression")
    plt.legend(loc=0)
    plt.show()
    '''

    3. 3D绘图

    # 3维绘图和拟合
    def fm(x,y):                                          # z 值
        return np.sin(x)+0.25*x+np.sqrt(y)+0.5*y**2
    x=np.linspace(0,10,20)
    y=np.linspace(0,10,20)
    X,Y= np.meshgrid(x,y)                                  # 网格化
    Z  = fm(X,Y)
    x = X.flatten()                                        # 切换值
    y = Y.flatten()
    
    # 绘图
    
    fig=plt.figure(figsize=(9,6))
    ax = fig.gca(projection='3d')
    surf = ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=mpl.cm.coolwarm,linewidth=0.5,antialiased=True)
    ax.set_xlabel('x')
    ax.set_ylabel('y')
    ax.set_zlabel('z')
    fig.colorbar(surf,shrink=0.5,aspect=5)
    plt.show()

  • 相关阅读:
    图片展示和上传需要注意的问题
    大数据技能学习
    C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
    领导力
    .NetCore 三种生命周期注入方式
    Redis常见面试题
    .NET Core开发日志——Middleware
    编程的灵魂
    递推算法
    分治算法
  • 原文地址:https://www.cnblogs.com/hanbb/p/7892310.html
Copyright © 2020-2023  润新知