我正在尝试在R中重现一段python代码。此代码使用fit_transform()
了sklearn.preprocessing.PolynomialFeatures
包中的函数,但我不明白为什么R的poly()
函数未输出相同的结果。有谁知道如何在R中实现相同数量的python代码,为什么poly()
不返回与相同的结果fit_transform()
?
R代码
poly(c(17:25),4, simple = TRUE)
R输出
1 2 3 4
[1,] -0.5163978 0.5318160 -4.449492e-01 0.3128931
[2,] -0.3872983 0.1329540 2.224746e-01 -0.4693397
[3,] -0.2581989 -0.1519474 4.131671e-01 -0.2458446
[4,] -0.1290994 -0.3228883 2.860388e-01 0.2011456
[5,] 0.0000000 -0.3798686 2.352347e-17 0.4022911
[6,] 0.1290994 -0.3228883 -2.860388e-01 0.2011456
[7,] 0.2581989 -0.1519474 -4.131671e-01 -0.2458446
[8,] 0.3872983 0.1329540 -2.224746e-01 -0.4693397
[9,] 0.5163978 0.5318160 4.449492e-01 0.3128931
Python代码
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree = 4)
foo = np.array([range(17,26)]).reshape(-1,1)
print(poly.fit_transform(foo))
Python输出
[[1.00000e+00 1.70000e+01 2.89000e+02 4.91300e+03 8.35210e+04]
[1.00000e+00 1.80000e+01 3.24000e+02 5.83200e+03 1.04976e+05]
[1.00000e+00 1.90000e+01 3.61000e+02 6.85900e+03 1.30321e+05]
[1.00000e+00 2.00000e+01 4.00000e+02 8.00000e+03 1.60000e+05]
[1.00000e+00 2.10000e+01 4.41000e+02 9.26100e+03 1.94481e+05]
[1.00000e+00 2.20000e+01 4.84000e+02 1.06480e+04 2.34256e+05]
[1.00000e+00 2.30000e+01 5.29000e+02 1.21670e+04 2.79841e+05]
[1.00000e+00 2.40000e+01 5.76000e+02 1.38240e+04 3.31776e+05]
[1.00000e+00 2.50000e+01 6.25000e+02 1.56250e+04 3.90625e+05]]
事实证明,我要做的只是raw = TRUE
在Rpoly()
函数中进行设置以引入原始多项式而不是正交多项式。R的输出采用通用表示法,而sklearn的输出采用科学表示法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句