阅读scipy最小二乘文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html指出:
我们可以将线方程改写为y = Ap,其中A = [[x 1]]和p = [[m],[c]]。现在使用lstsq求解p:
A = np.vstack([x,np.ones(len(x))])。T
一个数组([[0.,1.], [1.,1.], [2.,1.], [3.,1。]])
为什么将行改写为y = Ap
并将向量1添加到新变量A
中。仅从x和y值估计的最小二乘,为什么还要加上一个矢量?
答案 0 :(得分:2)
假设您要通过线性回归拟合5个x值和5个y值。然后可以写y1=m*x1 + c
,y2=m*x2 + c
,... y5=m*x5 + c
,其中m
是线性拟合的斜率,c
是y截距(y -x=0
的值)。表示这是矩阵形式,因为您有5个x值,所以您的A
矩阵将有5行,每行有两个条目:x值和常量1
来自上述集合5个方程式。因此,在A = np.vstack([x, np.ones(len(x))]).T
中,您可以使用np.ones(len(x))
添加与x值一样多的值。一个向量的引入只是简单地用一组方程表示矩阵的结果。
要获得更多的直觉,只需写下我下面互相提及的5个方程,然后以矩阵形式重写它们,您将明白为什么在A
中需要一个由向量组成的向量。