用交叉验证和AUCROC建立sklearn中的logistic回归模型

2024-04-26 18:17:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用sklearn包构建一个logistic回归模型,然后对其进行评估。具体来说,我想使用交叉验证来实现这一点,但无法通过cross_val_score函数找到正确的方法。

根据我看到的documentation和一些examples,我需要将函数传递给模型、特征、结果和评分方法。但是,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计算的概率。它只是自己做那部分吗?


Tags: 方法函数from模型importvalsklearn概率
2条回答

cross_val_score用真值训练输入的模型,执行预测,然后将这些预测与评分步骤的真值进行比较。这就是为什么要传入y:这是true值,即“基本真相”。

通过指定scoring='roc_auc'调用的^{}函数依赖于y_truey_pred:模型的基本事实和基于X的预测值。

所有有监督的学习方法(包括logistic回归)都需要真实的y值来拟合模型。

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

  • 做出预测,然后
  • 为这些预测打分(通常是在“坚持”的数据上,比如通过交叉验证)

cross_val_score为您提供模型预测的交叉验证分数。但要对预测进行评分,首先需要进行预测,然后进行预测,首先需要符合模型,这需要X和(true)y

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

相关问题 更多 >