GridSearchCV.best_score_ 评分设置为“准确度”和 CV 时的含义

Posted

技术标签:

【中文标题】GridSearchCV.best_score_ 评分设置为“准确度”和 CV 时的含义【英文标题】:GridSearchCV.best_score_ meaning when scoring set to 'accuracy' and CV 【发布时间】:2017-11-11 14:13:37 【问题描述】:

我试图在著名的威斯康星州癌症数据集(569 个样本,31 个特征 + 目标)上找到用于乳腺癌样本分类的最佳模型神经网络模型。我正在使用 sklearn 0.18.1。到目前为止,我没有使用标准化。我会在解决这个问题时添加它。

# some init code omitted
X_train, X_test, y_train, y_test = train_test_split(X, y)

为 GridSearchCV 定义参数 NN 参数

tuned_params = ['solver': ['sgd'], 'learning_rate': ['constant'], "learning_rate_init" : [0.001, 0.01, 0.05, 0.1],
                "learning_rate_init" : [0.001, 0.01, 0.05, 0.1]]

CV方法和模型

cv_method = KFold(n_splits=4, shuffle=True)
model = MLPClassifier()

应用网格

grid = GridSearchCV(estimator=model, param_grid=tuned_params, cv=cv_method, scoring='accuracy')
grid.fit(X_train, y_train)
y_pred = grid.predict(X_test)

如果我跑步:

print(grid.best_score_)
print(accuracy_score(y_test, y_pred))

结果是 0.7464788732390.902097902098

根据文档“best_score_ : float, best_estimator on the left out data”的得分。我认为它是在运行 tuned_pa​​rams 中指定的 8 种不同配置中获得的最佳精度,KFold 指定的次数,在 KFold 指定的左侧数据上。我说的对吗?

还有一个问题。有没有一种方法可以找到在 train_test_split 中使用的测试数据的最佳大小,默认为 0.25?

非常感谢

参考文献

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV http://scikit-learn.org/stable/modules/grid_search.html http://scikit-learn.org/stable/modules/cross_validation.html http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html#sphx-glr-auto-examples-model-selection-plot-nested-cross-validation-iris-py

【问题讨论】:

它是给定参数的单个组合的所有 cv 折叠的平均值。查看cv_results_。它将为您提供更多详细信息。 关于第二个问题,它取决于数据、算法等各种因素,可能更适合stats.stackexchange.com 嗨@VivekKumar,cv_results_ 有我需要的一切。非常感谢。我怎样才能接受你的回答? 我可以发表评论作为答案,然后您可以接受。 嗨@VivekKumar,是的,请这样做。我将发布 cv_results_ 的内容,以供其他人提供输出示例。 【参考方案1】:

grid.best_score_ 是您在tuned_params 中指定的单个参数组合的所有 cv 折叠的平均值。

要访问有关网格搜索过程的其他相关详细信息,您可以查看grid.cv_results_ 属性。

来自documentation of GridSearchCV:

cv_results_ : numpy (masked) ndarrays 的字典

A dict with keys as column headers and values as columns, 
that can be imported into a pandas DataFrame

它包含像'split0_test_score'这样的键, 'split1_test_score' , 'mean_test_score', 'std_test_score', 'rank_test_score', 'split0_train_score', 'split1_train_score', 'mean_train_score', 等,提供有关整个执行的附加信息。

【讨论】:

更具体地说,测试 cv 的平均值折叠对吗?

以上是关于GridSearchCV.best_score_ 评分设置为“准确度”和 CV 时的含义的主要内容,如果未能解决你的问题,请参考以下文章

GridSearchCV best_score_ 属性的含义是啥? (该值与交叉验证数组的平均值不同)

英语高手请进

简易先进先出队列-自用

函数参数

多重背包

合租房合同模板