numpy polynomial.Polynomial.fit() gives different coefficients than polynomial.polyfit()(Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同)
问题描述
我不明白为什么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 + ...的。但是,关键字参数domain和window都是缺省的[-1,1]。我不喜欢那个课程,所以我不确定目的是什么,但很明显,重新映射发生了。现在,在polynomial.Polynomial.fit()的情况下,我们有一个类方法,它自动接受x数据作为域,但仍然映射到窗口。因此,在OP中[0-10]被映射到[-1,1]。这是由x = x' / 5 - 1或x' -> 5 * x + 5完成的。把后者放在运算多项式中,我们得到
( 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.])
                        这篇关于Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Numpy多项式.Polynomial.fit()给出的系数与多项式.Polyfit()不同
				
        
 
            
        基础教程推荐
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 - 包装空间模型 2022-01-01
 - 求两个直方图的卷积 2022-01-01
 - PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				