代码之家  ›  专栏  ›  技术社区  ›  blue-sky

在计算最小二乘法时,为什么要加一的向量?

  •  1
  • blue-sky  · 技术社区  · 7 年前

    阅读scipy最小二乘法文档 https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html 国家:

    我们可以把直线方程改写为y=Ap,其中A=[[x1]]和p= [[m],[c]]。现在使用lstsq求解p:

    A=np.vstack公司([x],np.ones公司(长度(x))])。T

    数组([[0,1.], [ 1., 1.], [ 3., 1.]])

    y = Ap 把向量加在新变量上 A . 仅从x,y值估计的最小二乘法,那么为什么要加1的向量呢?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Sheldore    7 年前

    假设你有5个x值和相应的5个y值,你想通过线性回归来拟合。那你就可以写了 y1=m*x1 + c , y2=m*x2 + c , ... y5=m*x5 + c m c x=0 ). 表示这是一个矩阵形式,因为你有5个x值,你的 A 矩阵将有5行,每行有两个条目:x值和常量 1 来自上述5个方程组。因此在 A = np.vstack([x, np.ones(len(x))]).T ,可以使用 np.ones(len(x)) . 一个一的向量的引入只是一组方程的通常矩阵表示的结果。

    为了获得更多的直觉,只要写下我在下面提到的5个方程,然后把它们重新写成矩阵形式,你就会明白为什么你需要一个向量 A .