我對邏輯回歸進行了網格搜索,并將評分設置為“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個贊
看起來您的示例代碼有兩個問題:
您比較不同數據集上的 ROC_AUC 分數。擬合時使用訓練集,
roc_auc_score
調用時使用測試集交叉驗證評分的工作方式與簡單的
roc_auc_score
函數調用略有不同。它可以擴展為np.mean(cross_val_score(...))
因此,如果考慮到這一點,您將獲得相同的評分值。您可以使用colab notebook作為參考。
添加回答
舉報
0/150
提交
取消