Разница в коэффициентах Полиномиальная регрессия между R, Python - PullRequest
0 голосов
/ 01 апреля 2020

Я сейчас работаю над проектом, в котором мне нужно перевести код в .

Я столкнулся с проблемой полиномиальной . Есть разница между коэффициентами, которые я получил от R и Python.

Вот мои данные:

stress_immo['stress immo'] = [0.0 , -0.2 ,-0.4]
stress_immo['Choc A - EQ T1'] = [-0.021951,-0.021951,-0.021951]

Код, данный мне в R, следующий:

Reg_GF_S_cEQT1_A_a_RE <- lm(Choc.A...EQ.T1~stress.immo+ I(stress.immo^2), data=stress_immo)

Результат этого:

(Intercept)      -2.195e-02         NA      NA       NA
stress.immo      -9.014e-17         NA      NA       NA
I(stress.immo^2) -1.502e-16         NA      NA       NA

Вот мой код в Python (очень вероятно, будет неправильным):

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

x = (stress_immo['stress immo'].values).reshape(-1,1)
qfit = PolynomialFeatures(degree=2)
xq = qfit.fit_transform(x)

y = (stress_immo['Choc A - EQ T1'].values).reshape(-1,1)

qr = LinearRegression()
model = qr.fit(xq,y)

и вот мои результаты:

print(model.coef_)
[[0. 0. 0.]]
print(model.intercept_)
[-0.02195108]

Как видите, перехват корректен, поскольку коэффициенты всегда равны 0 (независимо от того, какие данные я выбираю), я также попытался выполнить , например:

x =stress_immo['stress immo'].values
x2 = np.power(stress_immo['stress immo'].values,2)
vector_row = np.array([x,x2]).reshape(-1, 2)
y = stress_immo['Choc A - EQ T1'].values
model = LinearRegression().fit(vector_row,y)

но результат всегда один и тот же, коэффициент 0

Буду признателен, если кто-нибудь сможет помочь. Спасибо,

...