Python 使用CV获得更高RMSE分数传达了什么信息
我在梯度推进回归器上使用了交叉验证 我已经在交叉验证期间计算了每个分数的RMSE,并找到了平均值,但是它似乎与RMSE相差太远,无法使用训练测试分割和比较(预测,实际) 从我的理解来看,使用train_test_split不能过度拟合,因为我没有在测试集上测试参数的不同组合 这种差异代表什么 这是我的密码:Python 使用CV获得更高RMSE分数传达了什么信息,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我在梯度推进回归器上使用了交叉验证 我已经在交叉验证期间计算了每个分数的RMSE,并找到了平均值,但是它似乎与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
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
并使用CV:
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左右,或者是否会发生变化,并且与交叉验证分数的分布类似 您需要检查交叉验证分数的标准偏差。可能的情况是,平均值为9.3,标准偏差相当高。在这种情况下,您的简历结果传达了数据错误率的真实性,但您的测试数据偶然导致了如此低的错误分数。尝试更改随机状态,看看您的错误率是否仍在4左右,或者是否会发生变化,并且与交叉验证分数的分布类似 这种差异代表什么 这表明你是一个幸运的列车/测试分流者。似乎你选择了一个非常适合训练和测试的分割 在这种情况下,我会信任您的
cross_val_分数
,并尝试进行更多拆分和调整gbr_le
,以获得更好的结果
为了了解数据的流动性,我们需要知道@BICube已经说过,您的数据分布有多大。目标变量的值是什么?什么是平均值(y)
,其偏差如何
这种差异代表什么
这表明你是一个幸运的列车/测试分流者。似乎你选择了一个非常适合训练和测试的分割
在这种情况下,我会信任您的cross_val_分数
,并尝试进行更多拆分和调整gbr_le
,以获得更好的结果
为了了解数据的流动性,我们需要知道@BICube已经说过,您的数据分布有多大。目标变量的值是什么?什么是平均值(y)
,其偏差如何