为了账号安全,请及时绑定邮箱和手机立即绑定

best_score_的gridsearch cv的AUC分数与来自gridsearch cv

best_score_的gridsearch cv的AUC分数与来自gridsearch cv

神不在的星期二 2021-12-29 18:14:56
我对逻辑回归进行了网格搜索,并将评分设置为“roc_auc”。grid_clf1.best_score_ 给了我 0.7557 的 auc。之后我想绘制最佳模型的 ROC 曲线。我看到的 ROC 曲线的 AUC 为 0.50 我根本不明白这一点。我查看了预测的概率,发现它们都是 0.0 或 1.0。因此,我认为这里出了点问题,但我找不到它是什么。我的网格搜索cv代码如下:clf1 = Pipeline([('RS', RobustScaler()), ('LR',      LogisticRegression(random_state=1, solver='saga'))])params = {'LR__C': np.logspace(-3, 0, 5),      'LR__penalty': ['l1']}grid_clf1 = GridSearchCV(clf1, params, scoring='roc_auc', cv = 5,       n_jobs=-1)grid_clf1.fit(X_train, y_train)grid_clf1.best_estimator_grid_clf1.best_score_所以这给出了最佳模型的 AUC 为 0.7557。然后,如果我自己计算模型的 AUC:y_pred_proba = grid_clf1.best_estimator_.predict_probas(X_test)[::,1]print(roc_auc_score(y_test, y_pred_proba))这给了我 0.50 的 AUC。
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

看起来您的示例代码有两个问题:

  1. 您比较不同数据集上的 ROC_AUC 分数。拟合时使用训练集,roc_auc_score调用时使用测试集

  2. 交叉验证评分的工作方式与简单的roc_auc_score函数调用略有不同。它可以扩展为np.mean(cross_val_score(...))

因此,如果考虑到这一点,您将获得相同的评分值。您可以使用colab notebook作为参考。


查看完整回答
反对 回复 2021-12-29
  • 1 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信