失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python实现——二元线性回归(最小二乘法)

Python实现——二元线性回归(最小二乘法)

时间:2021-07-09 07:41:55

相关推荐

Python实现——二元线性回归(最小二乘法)

/3/30

二元线性回归——矩阵公式法_又名:对于python科学库的糟心尝试_

二元线性回归严格意义上其实不过是换汤不换药,我对公式进行推导,其实也就是跟以前一样的求偏导并使之为零,并且最终公式的严格推导我大概也只能说是将将理解,毕竟最初的矩阵一开始都不太清楚应该是什么样子的,其中,Coursera的课程起到了非常显著的帮助。

其实这个部分我并不想写太多,因为理解并不是十分透彻,总体来讲,感觉就是一个公式的事情,其中对于python数据类型以及python库函数的使用反而耗费的时间更多,回头来更新。

python库函数的运用非常重要,也是卡住我好久的主要原因,其次,对于python几种数据结构类型也让我十分苦恼,毕竟我不太清楚大部分函数会返回给我什么样的结果。

其中最终的公式应该说是非常普及了,随便的搜索便可查找到,虽然花了这么大的功夫,最终带给我的印象却是远远不及梯度下降的那种循序渐进看着计算机一步步探索来的深刻。

然而,这不正是前人的努力所要想做到的一步到位的方式吗?

虽然是真真正正的计算公式,但是若是面对特殊的矩阵情况或者过大的矩阵,这个方法也是力不从心的,详情我不多赘述,毕竟我还是个没有系统学习线代概率的赤脚蒟蒻。

先这样,或许会再来更新吧。

以下是利用Coursera提供的部分数据进行的实现图像:

这里给出完整代码:

import xlrdimport sympy as spimport xlwtimport matplotlib.pyplot as pltfrom matplotlib import cmfrom mpl_toolkits.mplot3d import Axes3D import numpy as npworkbook=xlrd.open_workbook(r'dataset.xlsx')sheet=workbook.sheet_by_index(0)Y1=sheet.col_values(0)X1=sheet.col_values(1)X2=sheet.col_values(2)#Axes3Dfig = plt.figure()ax = Axes3D (fig)ax.scatter(X1, X2, Y1)#H为100*3矩阵,读入现有数据,第0列为1H=[]for i in range(100):values=[]values.append(1)values.append(X1[i])values.append(X2[i])H.append(values)#将H0数组化H0 = np.array(H) #H1为H的转置矩阵H1=np.array(H0).TH2=H1@H0#求逆矩阵H3=np.linalg.inv(H2)#最终结果计算temp=H3@H1@Y1temp=np.mat(temp)w0=temp[0,0]w1=temp[0,1]w2=temp[0,2]#生成两坐标轴取点x1=np.linspace(0,5000,100)x2=np.linspace(0,5,100)#将两坐标轴点合成x1, x2 = np.meshgrid(x1, x2)#结果方程,并输出最终结果图#z=w0+w1*x1+w2*x2ax.plot_surface(x1,x2,w0+w1*x1+w2*x2)plt.show()

如果觉得《Python实现——二元线性回归(最小二乘法)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。