Различные результаты для полиномиальной регрессии в R и Python - PullRequest
2 голосов
/ 23 апреля 2020

Я пытаюсь воспроизвести фрагмент кода python в R. Этот код использует функцию fit_transform() из пакета sklearn.preprocessing.PolynomialFeatures, и я не понимаю, почему функция poly() R не выводит то же самое Результаты. Кто-нибудь знает, как получить тот же номер кода python в R и почему 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]]

1 Ответ

0 голосов
/ 08 мая 2020

Оказывается, все, что мне нужно было сделать, это установить raw = TRUE в функции R's poly(), чтобы получить необработанные и не ортогональные полиномы. Вывод R в общих обозначениях, а вывод sklearn в научном c обозначении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...