我已经在梯度增强回归器上使用了交叉验证。
我已经在交叉验证期间为每个分数计算了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 - 哪些信息可以通过简历传达出更高的RMSE分数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59744346/