Получение больших показателей перекрестной проверки для линейной регрессии в Scikit-Learn - PullRequest
0 голосов
/ 25 июня 2018

Я очистил и подготовил набор данных для моделирования в 4 различных типах регрессии - Linear, Lasso, Ridge и Random Forest DT.

Проблема заключается в модели линейной регрессии. При запуске CV в k = 5 я получаю:

linreg = LinearRegression()
linreg.fit(X_train, y_train)

y_pred = linreg.predict(X_test)
cv_scores_linreg = cross_val_score(linreg, X_train, y_train, cv=5)


print("R^2: {}".format(linreg.score(X_test, y_test)))
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print("Root Mean Squared Error: {}".format(rmse))
print("Mean 5-Fold CV Score: {}".format(np.mean(cv_scores_linreg)))

print(cv_scores_linreg)

Который печатает мне счет:

R^2: 0.40113615279035175
Root Mean Squared Error: 0.7845007237654832
Mean 5-Fold CV Score: -8.07591739989044e+19
[ 3.70497335e-01 -9.07945703e+19  3.38625853e-01  3.38206306e-01
 -3.13001300e+20]

Для моего случайного леса я использую:

rf_reg = RandomForestRegressor()    
rf_reg.fit(X_train, y_train)

y_pred_rf = rf_reg.predict(X_test)

cv_scores_rf = cross_val_score(rf_reg, X_train, y_train, cv=5)
print("R^2: {}".format(rf_reg.score(X_test, y_test)))
rmse = np.sqrt(mean_squared_error(y_test, y_pred_rf))
print("Root Mean Squared Error: {}".format(rmse))
print("Mean 5-Fold CV Score: {}".format(np.mean(cv_scores_rf)))

print(cv_scores_rf)

Что дает:

R^2: 0.42158777391603736
Root Mean Squared Error: 0.770988735248686
Mean 5-Fold CV Score: 0.3894909330419569
[0.39982241 0.39516204 0.37037191 0.38400655 0.39809175]

Я не могу понять, почему все мои другие модели дают мне значения, подобные Случайному Лесу. Единственным выбросом является линейная модель. Когда я изменяю k = 10, 20, 30 и т. Д., Кажется, что 1 новое огромное значение за +10 к k.

Я вынул все нулевые данные, пустые места и поместил свои данные в логарифмическую шкалу, чтобы все это нормализовать. Что может пойти не так, когда проблемы возникают только из-за линейной модели?

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