python - 什么是 Gridsearch.cv_results_ ,是否可以解释其中的所有内容,即 mean_test_score 等?

标签 python machine-learning scikit-learn grid-search

我正在使用 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/

相关文章:

python - 如何使用 numpy 将数组中的任意两个元素相加并生成矩阵?

python - python模块存储在哪里?

machine-learning - 如何预测 tensorflow 中卷积神经网络中新的未见过示例的结果

python - Sklearn 朴素贝叶斯分类器,用于处理属于同一类的数据

python - sklearn : how to make fit and transform a feature selector in a GridSearchCV

python - sklearn 中评估指标(精度等)的意外行为

python - South 似乎加载了两次 initial_data.json

machine-learning - Keras 模型预测数列

Scikit-Learn:timeseriessplit 中的测试大小

python - 数组中的条件,Python