什么是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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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