GridSearchCV 未在 colab 中获取mean_test_score



我在colab中使用GridSearchCV运行randomForestClassifier。但是,myGridSearchCV不会返回mean_test_score并显示它不存在。当我尝试检查clf.cv结果时,没有mean_test_score。这适用于 Jupyter 笔记本而不是 Colab,我最近遇到了这个问题。

[Parallel(n_jobs=1)]: Done 120 out of 120 | elapsed: 25.3min finished
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-128-1d8f6c95affb> in <module>()
      7 clf.fit(X_tr, y_train)
      8 
----> 9 train_auc= clf.cv_results_['mean_train_score']
     10 cv_auc = clf.cv_results_['mean_test_score']
KeyError: 'mean_train_score'

实际上您遇到了mean_train_score关键错误。只需在 gridsearchcv 参数中设置return_train_score=True,它就可以完成这项工作。

值得注意的是,即使您在网格搜索中设置了return_train_score=True,如果您使用多个计分器,您仍然可能会收到mean_train_score错误。原因如下。如果您使用多个计分器运行GridSearchCV(例如,您将参数传递给网格搜索,例如在 scoring= {'Accuracy': 'accuracy', 'F1': 'f1_macro', 'AUC': 'roc_auc'} 中(,那么您可以预期mean_train_score变量名称将取决于您将refit设置的内容。例如,如果您设置了refit='AUC'则相应的变量名称将mean_train_AUC ,并相应地使用其他变量名称。这些是非常微妙的变化,记录在scikit-learn中,但检测和处理起来可能很痛苦。

mean_train_score缺失,您可以使用以下方法交叉验证

scores = rf.cv_results_

pd.DataFrame(scores).head()

射频是你的网格搜索CV

您将收到如下所示的错误

密钥错误:"mean_train_score">

溶液

在网格搜索cv 中设置 return_train_score=True

rf = GridSearchCV(rf, parameters, cv=n_folds, scoring="accuracy",return_train_score=True)

最新更新