什么是Gridsearch.cv_results_?能否解释其中的所有内容,例如mean_test_score等?

我在使用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行的数据框(7个max_depth选项乘以4个min_samples_split选项)。数据框的每一行都给出了这两个参数的一个组合的网格搜索指标。请记住,网格搜索的目标是选择哪种参数组合将具有最佳的性能指标。这正是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)所需的时间。这只是一个信息,除非时间是一个瓶颈,否则你通常不会关注这些指标。

Related Posts

多维度Top-k评分

例如,在机器学习中的自然语言处理中,通常使用波束搜索来…

R – Caret train() “错误:停止” 与 “在newdata中未找到对象中使用的所有变量名”

我正在尝试为蘑菇数据构建一个简单的朴素贝叶斯分类器。我…

创建训练和测试数据集分割,数据嵌套在多个文件夹中

我正在准备数据以训练一个图像识别模型。目前我有一个文件…

我的神经网络预测出现错误:IndexError: list index out of range

我正在进行一个简单的垃圾邮件/非垃圾邮件文本分类。我的…

python 给出数组是一维的,但索引了两个维度错误

我已经为 miniBatchGradientDesce…

TensorFlow自定义训练步骤使用不同的损失函数

背景 根据TensorFlow文档,可以使用以下方式执…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注