【问题标题】:In computing least squares why add vector of ones?在计算最小二乘为什么要添加向量?
【发布时间】:2019-02-20 01:04:02
【问题描述】:

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

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

A = np.vstack([x, np.ones(len(x))]).T

一个数组([[ 0., 1.], [1., 1.], [2., 1.], [ 3., 1.]])

为什么将行重写为 y = Ap 并将向量添加到新变量 A 。仅从 x , y 值估计的最小二乘为什么要添加向量?

【问题讨论】:

  • 1 的向量是否有可能是加权向量?例如,权重 2 相当于拥有相同 x、y 对的两个实例,但也可以使用非整数值(例如 1.5)对这些值进行加权。
  • 不是权重向量。在下面检查我的答案。它只是偏移量(常量)c 的前因子向量,其中 y=mx + c = 1

标签: python numpy scipy regression


【解决方案1】:

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

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

【讨论】:

  • 我注意到这在大多数多项式中都隐含,例如直线“y = a * x^0 + b * x^1”或二次“y = a * x^0 + b * x^1 + c * x^2" 因为 x^0 = 1。
  • 是的,就是1*c或者你也可以写成x^0*c
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2015-01-22
相关资源
最近更新 更多