使用交叉验证评估性能时的拟合模型

时间:2019-05-14 11:47:45

标签: python scikit-learn cross-validation

我目前正在尝试比较多个模型。 我制作了一个脚本,该脚本使用10倍交叉验证来评估性能,以获得最真实的性能。 我的问题是,适合什么培训和测试数据是否重要?例如我应该找到性能最好的训练和测试集并在之后重新拟合模型吗?

CV = model_selection.KFold(n_splits=K, shuffle=True)
# Split data

for train_index, test_index in CV.split(X, y):

    for model in models:

        # splitting up data set
        X_train = X.iloc[train_index]
        y_train = y.iloc[train_index]
        X_test = X.iloc[test_index]
        y_test = y.iloc[test_index]

        model.fit(X_train, y_train)
        print(model.score(X_test, y_test) * 100)

1 个答案:

答案 0 :(得分:0)

在我看来,这个问题对Cross Validated Stack Exchange社区来说要好得多(而且有很多posts on cross validation)。

但是,由于您是在Stack Overflow上询问的... 正如用户9769953所说:的确重要。

我认为交叉验证有两个主要用途:

  1. 检查数据是否存在明显差异,从而使模型的训练出现偏差。
  2. 验证未显示数据的性能(不显示折痕)。

预期结果是您将得到不同的结果(每次折叠相同的结果应该使您对数据或模型训练过程感到怀疑)。

交叉验证的性能仅作为所有折痕结果的平均值才有意义。与“ 1倍验证”(即对正在学习的数据运行模型)相比,这对于性能而言是更现实的值,因为通常您将对模型未看到的数据运行模型。 / p>