如何在一维Python中使用polyfit获得最小二乘/误差和

2024-10-03 21:29:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用polyfit对散点图做一个线性回归,我还想用残差来看看线性回归有多好。但是我不确定我是怎么得到这个的,因为它不可能从polyfit得到剩余值作为输出值,因为这是一维的。我的代码:

p = np.polyfit(lengths, breadths, 1)
m = p[0]
b = p[1]
yfit = np.polyval(p,lengths)
newlengths = []
for y in lengths:
    newlengths.append(y*m+b)
ax.plot(lengths, newlengths, '-', color="#2c3e50")

我看到了一个stackoverflow的答案,他们使用polyval-但我不确定这给了我什么。这是长度的精确值吗?我应该通过从polyval和'width'中找到每个元素的delta来找出错误吗?在


Tags: 代码inforplotnp线性axappend
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:29

在调用polyfit(请参见http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html)时,可以使用关键字full=True来获得拟合的最小平方误差:

coefs, residual, _, _, _ = np.polyfit(lengths, breadths, 1, full=True)

您可以通过执行以下操作获得相同的答案:

^{pr2}$

或者

residual = np.std(breadths-yfit)**2 * len(breadths)

此外,如果要绘制残差,可以执行以下操作:

coefs = np.polyfit(lengths, breadths, 1)
yfit = np.polyval(coefs,lengths)
plot(lengths, breadths-yfit)

相关问题 更多 >