【问题标题】:least squares equation for a vertical line垂直线的最小二乘方程
【发布时间】:2010-01-23 20:17:00
【问题描述】:

给定以下二维点:

213 106.8

214 189

214 293.4

213 324

223 414

我想为穿过它们的最小二乘垂直轴线找到一个方程。我的计划是得到一个线方程,这样我就可以测试后续点到最小二乘线的距离。

谢谢

【问题讨论】:

  • 不,这不是家庭作业,我正在制作一个面部识别程序,这只是其中的一小部分。谢谢

标签: least-squares


【解决方案1】:

严格来说,没有为垂直线定义最小二乘拟合(因为 每个点的误差是平行于 Y 轴测量的)。

但是,如果你交换 X 和 Y,你可以找到最好的水平线 正方形适合。它可以简单地计算 Y 坐标值的平均值:

水平线的方程就是 y = b。

每个点(xi, yi)的误差是(yi - b)。

误差平方和为 SSE = sum( (yi - b)2)。我们希望 找到最小化 SSE 的 b 值。取 SSE 的偏导数 尊重 b 并将其设置为零:

sum(-2(yi - b)) = 0

简化,

sum(yi) - Nb = 0

b = sum(yi)/N

所以在你的情况下,平均 X 坐标会给你 X 坐标 最适合您的观点的垂直线。

【讨论】:

    【解决方案2】:

    最通用的解决方案是申请Total Least Squares

    这会找到 (a, b, d) 以最小化垂直距离平方和 (ax+by=d (a^2+b^2=1): |ax + by – d|)。这可以处理垂直线,例如0x+1y=0。

    但是,这有点难以实现,所以@Jim Lewis 提供的解决方案可能更好,更实用..

    【讨论】:

    • 我不确定 OP 使用的是什么语言,但这是在 scipy-ODR 中实现的。要做到这一点,必须use two-dimensional input data(一维是x,另一维是y)然后模型值为零。因此,正如您所说,您正在解决 ax+by+d=0 的最小化问题。
    • 0x+1y=0 不是垂直的,是水平线。
    • 如果所有点都完全位于同一垂直线上,这是否有效?
    【解决方案3】:

    如果您希望最佳拟合线是垂直的(即 x = 常数),则 y 值无关紧要。只需取 x 值平方的均值的平方根。

    【讨论】:

    • 但如果它们只能是正数(比如像素)? ^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多