GridSearchCV如何计算培训分数?

时间:2018-04-18 12:04:44

标签: python scikit-learn cross-validation grid-search

我很难在return_train_score中找出参数GridSearchCV。来自docs

  

return_train_score:布尔值,可选

     

如果Falsecv_results_属性将不包含培训分数。

我的问题是:什么是培训分数?

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

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

from sklearn import datasets
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import StratifiedKFold    

X, y = datasets.load_iris(True)

skf = StratifiedKFold(n_splits=10, random_state=0)
knn = KNeighborsClassifier()

grid = GridSearchCV(estimator=knn, 
                    cv=skf, 
                    param_grid={'n_neighbors': [5]}, 
                    return_train_score=True)
grid.fit(X, y)

print('Mean test score: {}'.format(grid.cv_results_['mean_test_score']))
print('Mean train score: {}'.format(grid.cv_results_['mean_train_score']))
#Mean test score: [ 0.96666667]
#Mean train score: [ 0.96888889]

2 个答案:

答案 0 :(得分:2)

正在测试的所有折叠排除的预测模型的列车得分。在您的情况下,它是您训练模型的9倍的分数。

答案 1 :(得分:2)

也许我的other answer here会让您清楚地了解在网格搜索中的工作。

基本上,训练分数是对其训练过的相同数据的模型得分。

在每次折叠分割中,数据将分为两部分:训练和测试。列车数据将用于拟合()内部估算器,测试数据将用于检查其性能。训练分数只是为了检查模型与训练数据的匹配程度。