gpt4 book ai didi

python - numpy polynomial.Polynomial.fit() 给出与 polynomial.polyfit() 不同的系数

转载 作者:行者123 更新时间:2023-12-04 12:29:24 24 4
gpt4 key购买 nike

我不明白为什么 polynomial.Polynomial.fit() 给出的系数与预期的系数非常不同:

import numpy as np

x = np.linspace(0, 10, 50)
y = x**2 + 5 * x + 10

print(np.polyfit(x, y, 2))
print(np.polynomial.polynomial.polyfit(x, y, 2))
print(np.polynomial.polynomial.Polynomial.fit(x, y, 2))
给出:
[ 1.  5. 10.]
[10. 5. 1.]
poly([60. 75. 25.])
前两个结果还可以,感谢 this answer我明白为什么这两个数组的顺序相反。
但是,我不明白第三个结果的含义。尽管我以这种方式得到的多项式似乎给出了正确的预测值,但这些系数看起来是错误的。

最佳答案

当然,答案稍微隐藏在文档中。看着 class numpy.polynomial.polynomial.Polynomial(coef, domain=None, window=None)
很明显,一般来说,系数 [ a , b , c , ...] 用于多项式 a + b * x + c * x**2 + ... .但是,有关键字参数domainwindow两者都默认 [-1,1] .我不是那个类(class),所以我不确定目的,但很明显发生了重新映射。现在在 polynomial.Polynomial.fit() 的情况下有一个类方法可以自动获取 x data 作为域,但仍然映射到窗口。因此,在 OP [0-10] 中映射到 [-1,1] .这是由 x = x' / 5 - 1 完成的或 x' -> 5 * x + 5 .将后者放入 OP 多项式我们得到( 5 x' + 5 )**2 + 5 * ( 5 * x' + 5 ) + 10 = 25 * x'**2 + 75 * x' + 60瞧。
为了得到预期的结果,必须把

print(np.polynomial.polynomial.Polynomial.fit(x, y, 2, window=[0, 10] ) )
这给
poly([10.  5.  1.])

关于python - numpy polynomial.Polynomial.fit() 给出与 polynomial.polyfit() 不同的系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67371614/

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