博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小二乘法之一元线性拟合
阅读量:6273 次
发布时间:2019-06-22

本文共 1487 字,大约阅读时间需要 4 分钟。

hot3.png

import numpy as npimport matplotlib.pyplot as pltfrom scipy import optimizedata=np.array([[176,169],[171,162],[165,164],[178,170],[169,172],[172,170],[176,181],[168,161],[173,174],[171,164],[180,182],[191,188],[179,182],[162,153],                [164,160],[180,168],[170,180],[172,170],[172,170],[174,177],[187,175],[178,173],[181,183],[180,178],[182,180],[173,176],[173,175]                ])def f_1(x, A, B):    return A*x + B#scipy算法包封装的曲线拟合函数def test3():    X = np.array(data[:, 0])    Y = np.array(data[:, 1])    A1, B1 = optimize.curve_fit(f_1, X, Y)[0]    x1 = np.arange(160, 190, 0.01)    y1 = A1 * x1 + B1    plt.plot(X, Y, 'ro', x1, y1, "blue")  # 将拟合曲线和散点绘制在一起    plt.show()#使用多远线性回归的推导模型来计算,看成矩阵来计算def test2():    N=data.shape[0]    Y_T=np.matrix(data[:,1]).T#变成列矩阵    X_T=np.matrix([np.ones(N),data[:,0]]).T#变成列矩阵    b=np.linalg.inv(X_T.T.dot(X_T)).dot(X_T.T).dot(Y_T)    #计算出来后,第一个为常数,横街点,第二个为斜率    print("")#使用二元推导模型计算def test1():    #求Xi*Yi    N=data.shape[0]    X=np.array(data[:,0])    Y=np.array(data[:,1])    sumXi_Yi=np.dot(X,Y)    avg_X=np.sum(X,axis=0)/N#X的平均值    avg_Y=np.sum(Y,axis=0)/N#Y的均值    sum_X2=np.sum(X*X,axis=0)    #根据公式计算b值    b= (sumXi_Yi-N*avg_X*avg_Y)/(sum_X2-N*avg_X**2)    a=avg_Y-b*avg_X    # plt.plot(X, Y, 'ro')    # plt.show()    x1 = np.arange(160, 190, 0.01)    y1 = b * x1 + a    plt.plot(X, Y, 'ro',x1, y1, "blue")#将拟合曲线和散点绘制在一起    plt.show()

备注:

方法一的推导公式:

93441e9c218f67117a3aa25b2e74c2f2106.jpg

方法二的推导模型公式:

08c62d670a3cbf584ecbc1e0b2e3bfd82a3.jpg

方法三:直接使用scipy的线性拟合函数。

 

 

转载于:https://my.oschina.net/shea1992/blog/1837732

你可能感兴趣的文章
技术人员的焦虑
查看>>
js 判断整数
查看>>
建设网站应该考虑哪些因素
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
QT liunx 工具下载
查看>>
内核源码树
查看>>
Java 5 特性 Instrumentation 实践
查看>>
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>