数学大师请帮忙!
我使用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]
答案 0 :(得分:2)
numpy.polyfit
使用singular value decomposition来估算您的拟合中出现的系数。在没有太多细节的情况下,这涉及估计矩阵的逆,当奇异值出现时,矩阵可能很难。任何时候你希望参数接近于0,反转时的结果只能达到一定的精度,所以你应该期望一个小的非零结果。
在调用full=True
时尝试启用numpy.polyfit
以从适合中获取更多诊断信息,例如拟合参数上的错误。