什么是 Gridsearch.cv_results_ ,可以解释其中的所有内容,即 mean_test_score 等吗?
Posted
技术标签:
【中文标题】什么是 Gridsearch.cv_results_ ,可以解释其中的所有内容,即 mean_test_score 等吗?【英文标题】:what is Gridsearch.cv_results_ , could any explain all the things in that i.e mean_test_score etc .? 【发布时间】:2019-07-03 14:54:17 【问题描述】:我正在使用GridSearchCV
为决策树进行超参数调整。我已经拟合了模型,我正在尝试找出 Gridsearch.cv_results_
给出的确切内容。我已经阅读了文档,但仍然不清楚。谁能解释一下这个属性?
我的代码如下:
depth="max_depth":[1,5,10,50,100,500,1000],
"min_samples_split":[5,10,100,500]
DTC=DecisionTreeClassifier(class_weight="balanced")
DTC_Grid=GridSearchCV(DTC,param_grid=depth , cv=3, scoring='roc_auc')
DTC_Bow=DTC_Grid.fit(xtrain_bow,ytrain_bow)
【问题讨论】:
【参考方案1】:DTC_Bow.cv_results_ 返回来自 gridsearch 的所有评估指标的字典。要正确可视化它,您可以这样做
pd.DataFrame(DTC_Bow.cv_results_)
在您的情况下,这应该返回一个包含 28 行的数据框(max_depth
的 7 个选项乘以 min_samples_split
的 4 个选项)。该数据框的每一行都给出了这两个参数组合的网格搜索指标。请记住,网格搜索的目标是选择具有最佳性能指标的参数组合。这就是cv_results_
的目的。
您应该有一个名为param_max_depth
的列和另一个名为param_min_samples_leaf
的列引用每一行的参数值。两者的组合在params
列中总结为字典。
现在是指标。到目前为止,return_train_score
的默认值是 True
,但他们将在 0.21 版中将其更改为 False
。如果您需要训练指标,请将其设置为 True
。但通常,您感兴趣的是测试指标。
主栏是mean_test_score
。这是split_0_test_score, split_1_test_score, split_2_test_score
列的平均值(因为您在网格搜索中进行了 3 折拆分)。如果您执行DTC_Bow.best_score_
,这将返回mean_test_score
列的最大值。 rank_test_score
列按mean_test_score
的值对所有参数组合进行排名。
您可能还想查看std_test_score
,它是split_0_test_score, split_1_test_score, split_2_test_score
的标准差。如果您想了解您的一组参数在保留数据上的执行情况,这可能会很有趣。
如前所述,如果您设置了return_train_score = True
,您也可以在火车上设置指标。
最后,还有时间列,告诉您每行花费了多少时间。它测量训练模型 (mean_fit_time, std_fit_time
) 和评估模型 (mean_score_time, std_score_time
) 所花费的时间。这只是一个仅供参考,通常,除非时间是瓶颈,否则您不会真正查看这些指标。
【讨论】:
感谢您的详细解释,聚会有点晚了,但这有所帮助。我想知道 test_score 反映了什么?我在每一折中都得到了不错的 test_scores,但我的准确率仍然很低,谢谢!以上是关于什么是 Gridsearch.cv_results_ ,可以解释其中的所有内容,即 mean_test_score 等吗?的主要内容,如果未能解决你的问题,请参考以下文章