阅读scipy最小二乘法文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html说明:
We can rewrite the line equation as y = Ap, where A = [[x 1]] and p = [[m], [c]]. Now use lstsq to solve for p:
A = np.vstack([x, np.ones(len(x))]).T
A array([[ 0., 1.], [ 1., 1.], [ 2., 1.], [ 3., 1.]])
为什么要将行重写为y = Ap
,并将向量行添加到新变量A
。仅从x,y值估计的最小二乘法,那么为什么要加1的向量呢?你知道吗
假设你有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
中的向量。你知道吗相关问题 更多 >
编程相关推荐