zoukankan      html  css  js  c++  java
  • 数据工具的使用

    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()

  • 相关阅读:
    阻止事件冒泡和默认行为,禁止键盘事件
    jquery移除、绑定、触发元素事件
    HTML`CSS_网站页面不同浏览器兼容性问题解决
    computed属性与methods、watched
    call()方法和apply()方法用法总结
    push()、shift()与pop()、unshift()、splice()
    vue指令总结
    fieldset标签
    mysql存储过程定义者
    数据库死锁
  • 原文地址:https://www.cnblogs.com/hanbb/p/7892310.html
Copyright © 2011-2022 走看看