GridSearchCV 如何计算训练分数?
How does GridSearchCV compute training scores?
我很难找出 GridSearchCV
中的参数 return_train_score
。来自 docs:
return_train_score
: boolean, optional
If False
, the cv_results_
attribute will not include training scores.
我的问题是:训练分数是多少?
在下面的代码中,我将数据分成十个分层折叠。因此 grid.cv_results_
包含十个测试分数,即 'split0_test_score'
、'split1_test_score'
、...、'split9_test_score'
。我知道其中每一个都是 5 最近邻分类器获得的成功率,该分类器使用相应的折叠进行测试,其余九次进行训练。
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]
这是预测模型在所有折叠上的训练分数不包括您正在测试的那个。在你的例子中,它是你训练模型的 9 折的分数。
也许我的 会让您清楚地了解在网格搜索中的工作。
本质上,训练分数是模型在其训练所依据的相同数据上的分数。
在每一次fold split中,数据都会被分成两部分:train和test。训练数据将用于 fit() 内部估计器,测试数据将用于检查其性能。训练分数只是检查模型与训练数据的拟合程度。
我很难找出 GridSearchCV
中的参数 return_train_score
。来自 docs:
return_train_score
: boolean, optionalIf
False
, thecv_results_
attribute will not include training scores.
我的问题是:训练分数是多少?
在下面的代码中,我将数据分成十个分层折叠。因此 grid.cv_results_
包含十个测试分数,即 'split0_test_score'
、'split1_test_score'
、...、'split9_test_score'
。我知道其中每一个都是 5 最近邻分类器获得的成功率,该分类器使用相应的折叠进行测试,其余九次进行训练。
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]
这是预测模型在所有折叠上的训练分数不包括您正在测试的那个。在你的例子中,它是你训练模型的 9 折的分数。
也许我的
本质上,训练分数是模型在其训练所依据的相同数据上的分数。
在每一次fold split中,数据都会被分成两部分:train和test。训练数据将用于 fit() 内部估计器,测试数据将用于检查其性能。训练分数只是检查模型与训练数据的拟合程度。