GridSearchCV 如何计算训练分数?

Ton*_*has 6 python scikit-learn cross-validation grid-search

我很难弄清楚return_train_score中的参数GridSearchCV。来自文档

\n
\n

return_train_score:布尔值,可选

\n

\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0如果False,该cv_results_属性将不包含训练分数。

\n
\n

我的问题是:训练成绩是多少?

\n

在下面的代码中,我将数据分成十个分层折叠。结果grid.cv_results_包含十个测试分数,即\'split0_test_score\', \'split1_test_score\', ..., \'split9_test_score\'。我知道其中每一个都是 5 个最近邻分类器获得的成功率,该分类器使用相应的折叠进行测试并使用剩余的九个折叠进行训练。

\n

grid.cv_results_还包含十个火车分数:\'split0_train_score\', \'split1_train_score\', ..., \'split9_train_score\'。这些值是如何计算的?

\n
from sklearn import datasets\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.model_selection import StratifiedKFold    \n\nX, y = datasets.load_iris(True)\n\nskf = StratifiedKFold(n_splits=10, random_state=0)\nknn = KNeighborsClassifier()\n\ngrid = GridSearchCV(estimator=knn, \n                    cv=skf, \n                    param_grid={\'n_neighbors\': [5]}, \n                    return_train_score=True)\ngrid.fit(X, y)\n\nprint(\'Mean test score: {}\'.format(grid.cv_results_[\'mean_test_score\']))\nprint(\'Mean train score: {}\'.format(grid.cv_results_[\'mean_train_score\']))\n#Mean test score: [ 0.96666667]\n#Mean train score: [ 0.96888889]\n
Run Code Online (Sandbox Code Playgroud)\n

Jan*_*n K 4

它是预测模型在所有折叠上的训练分数(不包括您正在测试的折叠)。在您的例子中,它是您训练模型的 9 次折叠的分数。

  • @Tonechas [GridSearchCV 文档](http://scikit-learn.org/stable/modules/ generated/sklearn.model_selection.GridSearchCV.html) 上的 `return_train_score` 参数有一些关于它的信息 (2认同)