我在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)