为什么numpy.polyfit会为直线数据返回非零值?

时间:2015-07-09 05:00:46

标签: python numpy

数学大师请帮忙!

我使用numpy.polyfit来获得"斜率"来自python列表的一行。如果数据是负斜率,我需要对数据采取行动,但我得到非常轻微的负/正值而不是零(水平)斜率,并且我不确定原因。

例如。 [206,206,206,206,206,206,206,206]给出-1.92165829214e-14而不是0

非常感谢任何帮助。

def lineOfBestFit(data):

    y = data
    x = range(len(y))

    coefficients = np.polyfit(x, y, 1)
    return coefficients[0]

1 个答案:

答案 0 :(得分:2)

numpy.polyfit使用singular value decomposition来估算您的拟合中出现的系数。在没有太多细节的情况下,这涉及估计矩阵的逆,当奇异值出现时,矩阵可能很难。任何时候你希望参数接近于0,反转时的结果只能达到一定的精度,所以你应该期望一个小的非零结果。

在调用full=True时尝试启用numpy.polyfit以从适合中获取更多诊断信息,例如拟合参数上的错误。