gpt4 book ai didi

python - 如何强制二阶 polyfit 的 y 截距为 0

转载 作者:行者123 更新时间:2023-11-28 22:02:16 25 4
gpt4 key购买 nike

我一直在使用 numpy.polyfit 函数进行一些预测。如果我输入 1 的次数,它会起作用,但我需要进行二次多项式拟合。在某些情况下它有效,在其他情况下,预测的情节下降然后永远上升。例如:

import matplotlib.pyplot as plt
from numpy import *

x=[1,2,3,4,5,6,7,8,9,10]
y=[100,85,72,66,52,48,39,33,29,32]
fit = polyfit(x, y, degree)
fitfunction = poly1d(z4)
to_predict=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

plt.plot(to_predict,fitfunction(to_predict))
plt.show()

在我运行之后,它出现了(我试着放一张图片,但 stackoverflow 不允许我)。

我想强制它通过零。

我该怎么做?

最佳答案

如果您不需要使用原始最小二乘公式计算拟合误差(即最小化 ∑ |yi - (axi2 + bxi)|2), 你可以尝试执行 y/x线性拟合> 相反,因为 (ax2 + bx)/x = ax + b。

如果必须使用相同的误差度量,直接构造系数矩阵并使用 numpy.linalg.lstsq :

coeff = numpy.transpose([x*x, x])
((a, b), _, _, _) = numpy.linalg.lstsq(coeff, y)
polynomial = numpy.poly1d([a, b, 0])

(请注意,您提供的数据序列看起来不像是 y 截距为 0 的抛物线。)

关于python - 如何强制二阶 polyfit 的 y 截距为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com