我已经清洗和准备好了一个数据集,可以用4种不同的回归类型进行建模 - 线性回归、Lasso回归、Ridge回归和随机森林决策树。
问题出在线性回归模型上。当运行k = 5的CV时,我得到了以下结果:
问题出在线性回归模型上。当运行k = 5的CV时,我得到了以下结果:
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等时,每增加10个k就会出现1个新的巨大得分值。
我已经删除了所有空数据、空格,并将我的数据放入对数尺度中以使其归一化。当只有线性模型产生问题时,可能出了什么问题?
cv
来检查每次测试折叠的分数),或者在这里发布重复行为的数据。没有实际数据,我们无法提供帮助。 - Vivek Kumar