繁体   English   中英

sklearn-metrics 回归合理,而交叉验证返回大量数据

[英]sklearn-metrics of regression reasonable while cross-validation returns huge number

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

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.0 52.5981399 52.9672973 126397404000.0 51.7644346 51.0301124 54.567266 669753606000.0 429844291000.0

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM