【问题标题】:Getting keyerror from sklearn.model_selection.GridSearchCV从 sklearn.model_selection.GridSearchCV 获取 keyerror
【发布时间】:2019-10-18 08:55:45
【问题描述】:

我正在尝试使用 GridSearchCV 实现决策树分类器。实施后,我尝试访问 cv_results_.mean_train_score 但我遇到了关键错误。

    tuned_parameters = [{'max_depth': [1, 5, 10, 25, 50, 75, 100, 150, 250, 500, 750, 1000], 
                         'min_samples_split' : [5, 10, 25, 50, 75, 150, 250, 500]}] 
    cv_timeSeries = TimeSeriesSplit(n_splits=4).split(X_train)
    base_estimator = DecisionTreeClassifier(class_weight='balanced') 
    gsearch_cv = GridSearchCV(estimator=base_estimator, 
                              param_grid=tuned_parameters, 
                              cv=cv_timeSeries, 
                              scoring='roc_auc', 
                              n_jobs=-1)
    gsearch_cv.fit(X_train, y_train)

当我尝试访问 gsearch_cv 的所有键时,我无法找到字典键 mean_train_score。

【问题讨论】:

    标签: python machine-learning decision-tree gridsearchcv


    【解决方案1】:

    能否请您发布产生错误的代码?

    mean_train_score 是 cv_results_ 的一个键,所以要获得他的值,你应该:

    gsearch_cv = GridSearchCV(estimator=base_estimator, 
                              param_grid=tuned_parameters, 
                              cv=cv_timeSeries, 
                              scoring='roc_auc', 
                              return_train_score=True,
                              n_jobs=-1)
    gsearch_cv.fit(X_train, y_train)
    gsearch_cv.cv_results_['mean_train_score']
    

    你可以在sklearn页面https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html找到一个完整的例子

    【讨论】:

    • @Matteo,我尝试运行上面链接中给出的示例,但仍然没有名为 mean_train_score 的键。密钥集合仅包含与 test 相关的分数,而不是 train
    • 嗨,你能把你的'gsearch_cv.cv_results_.keys()'的输出贴出来
    • sorted(clf.cv_results_.keys()) 输出 ['mean_fit_time', 'mean_score_time', 'mean_test_score', 'param_C', 'param_kernel', 'params', 'rank_test_score', 'split0_test_score '、'split1_test_score'、'split2_test_score'、'split3_test_score'、'split4_test_score'、'std_fit_time'、'std_score_time'、'std_test_score']
    • 尝试运行:gsearch_cv = GridSearchCV(return_train_score=True, estimator=base_estimator, param_grid=tuned_pa​​rameters, cv=cv_timeSeries,scoring='roc_auc', n_jobs=-1)
    【解决方案2】:

    在GridSearchCV中添加参数跟随参数

    GridSearchCV(return_train_score=True)

    【讨论】:

      【解决方案3】:

      尝试以下更改:

      gsearch_cv = GridSearchCV(estimator=base_estimator,
                                param_grid=tuned_parameters,
                                cv=cv_timeSeries,
                                scoring='roc_auc',
                                return_train_score=True,
                                n_jobs=-1,
                                return_train_score=True)
      

      【讨论】:

      • 这与另一个答案相同,只是添加了两次return_train_score=True。我投票删除这个答案。
      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 2018-12-19
      • 2018-10-24
      • 2022-11-20
      • 2020-05-11
      • 1970-01-01
      相关资源
      最近更新 更多