python – 在sklearn中使用交叉验证和AUC-ROC作为逻辑回归模型

我正在使用sklearn包来构建逻辑回归模型,然后对其进行评估.具体来说,我想使用交叉验证,但无法通过cross_val_score函数找出正确的方法.

根据我看到的documentationexamples,我需要传递模型,特征,结果和评分方法的功能.然而,AUC不需要预测,它需要概率,因此它可以尝试不同的阈值并基于此计算ROC曲线.那么这里的正确方法是什么?这个函数有’roc_auc’作为一种可能的评分方法,所以我假设它与它兼容,我只是不确定使用它的正确方法.下面的示例代码段.

from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import cross_val_score

features = ['a', 'b', 'c']
outcome = ['d']
X = df[features]
y = df[outcome]
crossval_scores = cross_val_score(LogisticRegression(), X, y, scoring='roc_auc', cv=10)

基本上,我不明白为什么我需要在这里将y传递给我的cross_val_score函数,而不是在逻辑回归模型中使用X计算的概率.它只是自己做那个部分吗?

最佳答案 所有监督学习方法(包括逻辑回归)都需要真实的y值才能适合模型.

在拟合模型后,我们通常希望:

>做出预测,和
>对这些预测进行评分(通常在’保持’数据上,例如通过使用交叉验证)

cross_val_score为您提供模型预测的交叉验证分数.但是为了对预测进行评分,它首先需要进行预测,并且要做出预测,首先需要拟合模型,这需要X和(真)y.

您注意到cross_val_score接受不同的评分指标.因此,如果您选择f1-score,则在交叉val-score期间生成的模型预测将是类预测(来自模型的predict()方法).如果您选择roc_auc作为度量标准,则用于对模型进行评分的模型预测将是概率预测(来自模型的predict_proba()方法).

点赞