600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 用python求解多元线性回归方程的权重和残差

用python求解多元线性回归方程的权重和残差

时间:2020-12-25 05:07:04

相关推荐

用python求解多元线性回归方程的权重和残差

最近学金融的妹妹要处理数据写论文,对一个文科妹子来说,数学学不会,公式看不懂怎么破~作为姐姐的我看在眼里,疼在心里,打算帮妹妹解决掉数据计算这方面的问题。原来就是求三元线性回归的残差啊,害,这有什么难的,妹妹就是不会算权重,一直在网上寻找已经算好权重的数据,为此特意开通了什么会员,咱也不知道咱也不敢问。于是乎,利用自己所学的python,写下了这个程序。

简单介绍一下什么是线性回归?

答:线性回归是通过一个或多个自变量因变量之间进行建模的回归分析。其中可以为一个或多个自变量之间的线性组合

一元线性回归涉及到的变量只有一个;多元线性回归涉及到的变量有两个及两个以上。

线性关系模型为:

w为权重,b为偏置项,其中wx为矩阵。转换成矩阵如下:

话不多说,上案例。妹妹论文中的公式是:

可简化为:

根据推导得到:

典型的多元线性回归方程,具体推导就不详细说明了,大家自行百度。接下来上代码。

如果不怕麻烦想试一下’.txt’文件转 ‘.csv’ 文件,就看方法一,想直接用.xlsx转.csv的看方法二。

第一步,首先需要numpy 库和 pandas 库,不会安装的戳下面链接,安装过的略过。

/zcs_xueli/article/details/105737403

方法一:先将excel表转换成.txt文件

接下来打开.txt文件,另存为’utf-8’格式,如果不是,会报错。

from numpy.linalg import inv # 矩阵求逆from numpy import dot # 求矩阵点乘import numpy as npimport pandas as pdtxt = np.loadtxt('file.txt')txtDF = pd.DataFrame(txt)txtDF.to_csv('file.csv', index=False)data = pd.read_csv('file.csv')dataset = pd.DataFrame(data,copy = True)test = dataset.iloc[:, 0:4]test = test.copy()X = test.iloc[:, [1,2,3]]Y = test.iloc[:, 0]theta = dot(dot(inv(dot(X.T, X)), X.T), Y)y = dot(theta, X.T)print('权重',theta) # 权重loss = np.array(Y-y) # 残差print('残差',loss)

运行结果:

权重和残差都可以算出来了。

方法二:’.xlsx’ 转 ‘.csv’

from numpy.linalg import inv # 矩阵求逆from numpy import dot # 求矩阵点乘import numpy as npimport pandas as pddata = pd.read_excel('1.xlsx',index_col=0)data.to_csv('data.csv',encoding='utf-8')data = pd.read_csv('data.csv')dataset = pd.DataFrame(data,copy = True)test = dataset.iloc[:, 0:4]test = test.copy()X = test.iloc[:, [1,2,3]]Y = test.iloc[:, 0]theta = dot(dot(inv(dot(X.T, X)), X.T), Y)y = dot(theta, X.T)print('权重',theta) # 权重loss = np.array(Y-y) # 残差print('残差',loss)

运行结果跟上面是一样的

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