我对梯度增强回归器使用了交叉验证。
我在交叉验证期间计算了每个分数的 RMSE,并找到了平均值,但使用 train_test_split 和比较(预测的、实际的),它似乎与 RMSE 相差太远。
根据我的理解,使用 train_test_split 不会过度拟合,因为我没有在测试集上测试参数的差异组合。
这个差异代表什么?
这是我的代码:
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3, random_state=0)
gbr_le = GradientBoostingRegressor(
n_estimators = 1000,
learning_rate = 0.1,
random_state = 0
)
model = gbr_le.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f'{np.sqrt(metrics.mean_squared_error(y_test, y_pred))}')
>>> 4.881378370139346
并使用简历:
scores = cross_val_score(gbr_le, X, y, cv=7, scoring='neg_mean_squared_error')
statistics.mean([np.sqrt(-sc) for sc in scores])
>>> 9.381100515895412
最佳答案
您需要检查交叉验证分数的标准差。可能的情况是,您的平均值为 9.3,而您的标准差相当高。在这种情况下,您的简历结果传达了数据错误率的真实情况,但您的测试数据偶然导致了如此低的错误分数。尝试更改随机状态,看看您的错误率是否仍然在 4 左右,或者它是否会发生变化并具有与交叉验证分数相似的分布。
关于python - 使用 CV 获得较高的 RMSE 分数传达什么信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59744346/