Python sklearn回归度量合理,而交叉验证返回大量

Python sklearn回归度量合理,而交叉验证返回大量,python,machine-learning,scikit-learn,data-science,Python,Machine Learning,Scikit Learn,Data Science,我是一个初学者,遵循Aurelian Geron关于使用SKLEARN学习ML的书中的教程。 使用以下内容测试我的预测时: from sklearn.metrics import mean_squared_error listings_predictions = lin_reg.predict(listings_prepared) lin_mse = mean_squared_error(listings_labels, listings_predictions) lin_rmse = np.

我是一个初学者,遵循Aurelian Geron关于使用SKLEARN学习ML的书中的教程。 使用以下内容测试我的预测时:

from sklearn.metrics import mean_squared_error

listings_predictions = lin_reg.predict(listings_prepared)
lin_mse = mean_squared_error(listings_labels, listings_predictions)
lin_rmse = np.sqrt(lin_mse)
lin_rmse
我得到了
51.96
。(似乎很合理)

现在,当我运行同一方法的交叉验证时,我从这个世界中获得了价值:

lin_scores = cross_val_score(lin_reg, listings_prepared, listings_labels,
                             scoring="neg_mean_squared_error", cv=10)
lin_rmse_scores = np.sqrt(-lin_scores)
display_scores(lin_rmse_scores)


   Scores: [5.33624445e+01 2.96290932e+10 5.25981399e+01 5.29672973e+01
     1.26397404e+11 5.17644346e+01 5.10301124e+01 5.45672660e+01
     6.69753606e+11 4.29844291e+11]
    Mean: 125562439481.52774
    Standard deviation: 221930379288.67526

你能建议在哪里寻找问题的根源吗?回归怎么可能是“有点不对劲”,而对同一数据的交叉验证怎么可能高出数十亿倍

要重新设置交叉验证分数的格式,它们是:

53.3624445
29629093200
52.5981399
52.9672973
126397404000
51.7644346
51.0301124
54.567266
669753606000
429844291000


正如BlackBear所说,这表明在您的四个CV分区中可能存在一些异常值。这些是每个单独交叉验证运行的测试集上的错误分数,因此,如果其中有一个异常值,这意味着模型在其训练集中没有将其作为学习的示例。当您在没有CV的情况下使用所有数据进行训练时,该模型有一些离群值示例可供学习

要重新设置交叉验证分数的格式,它们是:

53.3624445
29629093200
52.5981399
52.9672973
126397404000
51.7644346
51.0301124
54.567266
669753606000
429844291000


正如BlackBear所说,这表明在您的四个CV分区中可能存在一些异常值。这些是每个单独交叉验证运行的测试集上的错误分数,因此,如果其中有一个异常值,这意味着模型在其训练集中没有将其作为学习的示例。当您在没有CV的情况下使用所有数据进行训练时,该模型有一些离群值示例可供学习

检查数据集是否存在异常值检查数据集是否存在异常值