【问题标题】:Computing training score using cross_val_score使用 cross_val_score 计算训练分数
【发布时间】:2017-11-24 15:13:11
【问题描述】:

我正在使用cross_val_score 来计算回归量的平均分数。这是一个小sn-p。

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score 

cross_val_score(LinearRegression(), X, y_reg, cv = 5)

使用这个我得到一个分数数组。我想知道验证集上的分数(如上面数组中返回的)与训练集上的分数有何不同,以了解我的模型是过拟合还是欠拟合。

有没有办法使用cross_val_score 对象来做到这一点?

【问题讨论】:

  • 传入你的训练集看看。

标签: python scikit-learn cross-validation


【解决方案1】:

您可以使用cross_validate 代替cross_val_score
根据doc:

cross_validate 函数与 cross_val_score 有两个不同之处 -

  • 它允许指定多个评估指标。
  • 它返回一个字典,其中包含训练分数、拟合时间和分数时间以及测试分数。

【讨论】:

    【解决方案2】:

    你为什么想要那个? cross_val_score(cv=5) 会为您执行此操作,因为它会将您的训练数据拆分 10 次并验证 5 个测试子集的准确度分数。这种方法已经可以作为一种防止模型过度拟合的方法。

    无论如何,如果您渴望验证验证数据的准确性,那么您必须首先在 X 和 y_reg 上拟合 LinearRegression。

    【讨论】:

    • 嗨,E.Z。我认为可以预测 X-Validation 迭代器中使用的训练集,以了解任何潜在的过度拟合。也许这是不可能的。
    • 在使用 cross_val_score 时很容易忽略潜在的过拟合,因为它在 X 的不同子集上进行训练和预测,然后验证准确性。在您的情况下,这些测试子集就像 X_validation 。但是适合您的场景已经过时了。您可以在此处阅读有关过拟合过程的更多信息:neuralnetworksanddeeplearning.com/…。它更多地与神经网络部分相关,但含义完全相同。谢谢。
    • @E.Z.我们总是防止过拟合吗?
    • 交叉验证是一种成熟的技术 - 它始终如一地工作。
    猜你喜欢
    • 2018-09-28
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2014-07-22
    • 2014-07-07
    • 2020-09-16
    • 2018-11-11
    相关资源
    最近更新 更多