我正在使用 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)
最佳答案
DTC_Bow.cv_results_ 返回网格搜索中所有评估指标的字典。要正确地可视化它,您可以这样做
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
)所花费的时间。这仅供引用,通常情况下,除非时间是瓶颈,否则您不会真正查看这些指标。
关于python - 什么是 Gridsearch.cv_results_ ,是否可以解释其中的所有内容,即 mean_test_score 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54608088/