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

标签 python scikit-learn logistic-regression cross-validation roc

我正在使用 sklearn 包构建逻辑回归模型,然后对其进行评估。具体来说,我想使用交叉验证来做到这一点,但无法找到使用 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 计算的概率逻辑回归模型。它只是自己完成那部分吗?

最佳答案

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

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

  • 做出预测,并且
  • 对这些预测进行评分(通常基于“保留的”数据,例如使用交叉验证)

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

cross_val_score 如您所述接受不同的评分指标。因此,例如,如果您选择 f1-score,则在 cross-val-score 期间生成的模型预测将是类预测(来自模型的 predict()方法)。如果您选择 roc_auc 作为指标,则用于对模型评分的模型预测将是概率预测(来自模型的 predict_proba() 方法)。

关于python - 在 sklearn 中使用交叉验证和 AUC-ROC 建立逻辑回归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44036193/

相关文章:

python - 为什么 While 循环会在下一条语句中产生语法错误

windows - sklearn : ImportError: DLL load failed: The specified module could not be found

machine-learning - 逻辑回归对异常值敏感吗?在合成二维数据集上使用

python - 在 SKLearn Logistic 回归中,class = Balanced 有助于运行具有不平衡数据的模型?此选项使用什么方法

python - 在 Python Logistic 回归中为求解器提供种子值

python - 查找两个文件中相似的列

python - 在 python 中混合使用 switch 和 rotate 对数字进行排序

python - 在 pandas 中,如何读取列中包含列表的 csv 文件?

python - 我如何解释测试数据上的性能下降?

python - Scikit Learn 中的 CountVectorizer