У меня есть 9 предикторов (Clean df), но когда я запускаю модель, я получаю 10 коэффициентов. Вот мой код:
#Get clean df with only more relevant columns
Clean_indices = wkospi[['Open_sp','Close_sp','Close_jp','Open_eur','High_eur','Open_kos','Close_kos','1 Mo','2 Mo','1 Yr','2 Yr','Open_oil','Open_gold']]
Clean_df = wkospi[['Close_jp','Open_sp','Open_eur','High_eur','Close_kos','3 Mo','6 Mo', '1 Yr', '2 Yr']]
#Run the test for Clean df ALIAS "cd"
cdx_train, cdx_test, cdy_train, cdy_test = train_test_split(Clean_df, Clean_indices['Close_sp'] , test_size=0.6, random_state = 4, shuffle = True)
#Prepare train data and test data as polynomials
cpr=PolynomialFeatures(degree=1)
cdp_train=cpr.fit_transform(cdx_train)
cdp_test=cpr.fit_transform(cdx_test)
RigeModel_cd=Ridge(alpha = 1000)
RigeModel_cd.fit(cdp_train, cdy_train)
yhat_cd = RigeModel_cd.predict(cdp_test)
Но когда я проверяю коэффициенты, вместо этого получаю 10.
in>> RigeModel_cd.coef_
out>> array([ 0.00000000e+00, 4.66393448e-03, 9.60826030e-01, -8.18000961e-01,
8.78056763e-01, -9.08744162e-05, -3.30052619e-01, -4.24748286e-01,
-5.42880494e-01, -6.49848520e-01])
Кто-нибудь знает, почему это происходит?
На мой взгляд, для ваших предикторов существует, вероятно, 9 весовых коэффициентов и одна константа как смещение или смещение всей модели (я считаю, что это правильно называется перехватом, как и в других моделях или регрессиях).
Возможно, метод get_params()
даст вам подсказку, что происходит, так как веса должны быть названы этим методом.
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
PolynomialFeatures
по умолчанию имеет include_bias=True
, что добавляет столбец всех единиц. Обратите внимание, что первый коэффициент точно равен нулю, потому что Ридж отказался от этого члена в пользу собственного перехвата.
Легенда, спасибо! Если не сложно, не могли бы вы объяснить, как это изменение повлияет на модель? Или направить меня на чтения, которые могли бы дать мне ответ?
@julianlagier Поскольку коэффициент равен нулю, удаление этой функции не будет иметь никакого эффекта (если, я полагаю, путь решения не является какой-то случайностью).
Здравствуйте, спасибо за ответ, константа хранится в другой переменной: Rigemodel_cd.intercept_