我想用python计算多元线性回归。 我找到了这个简单线性回归的代码
import numpy as np
from matplotlib.pyplot import *
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 4, 5])
n = np.max(x.shape)
X = np.vstack([np.ones(n), x]).T
a = np.linalg.lstsq(X, y)[0]
所以,a是系数,但我看不出[0]
是什么意思?
我如何改变代码来获得多重线性回归?
要使用python实现多元线性回归,可以使用以下任一选项:
1)使用正态方程法(使用矩阵逆)
2) Numpy的最小二乘Numpy.linalg.lstsq工具
3) Numpy的np.linalg.求解工具
对于法方程法,可以使用以下公式:
在上述公式中,X是特征矩阵,y是标签向量。
至于Numpy的Numpy.linalg.lstsq或np.linalg.solve工具,您只需在开箱即用。
在这里,我提供了一个可用于测试的示例数据链接: https://drive.google.com/file/d/0BzzUvSbpsTAvN1UxTkxXd2U0eVE/view
备选方案:https://www.dropbox.com/s/e3pd7fp0rfm1cfs/DB2.csv?dl=0
数据准备代码:
对于最小二乘法,使用Numpy的Numpy.linalg.lstsq。下面是Python代码:
您还可以使用numpy的np.linalg.solve工具:
对于法方程方法,使用:
在所有方法中都使用正则化。下面是结果(θ系数),可以看出这三种方法之间的差异:
正如你所看到的正规方程,最小二乘法和np.linalg.solve工具方法给出了不同程度的结果。
要将其扩展到多元线性回归,只需创建多维x而不是一维x
也就是说
http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html
关于线性回归中的截距,即
y=a+bx+误差,a[0]=a,a[1]=b
相关问题 更多 >
编程相关推荐