在 sklearn 中使用交叉验证和 AUC-ROC 建立逻辑回归模型
Using cross validation and AUC-ROC for a logistic regression model in sklearn
我正在使用 sklearn
包构建逻辑回归模型,然后对其进行评估。具体来说,我想使用交叉验证来这样做,但无法找到使用 cross_val_score
函数的正确方法。
根据我看到的 documentation and some ,我需要将模型、特征、结果和评分方法传递给函数。但是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
计算的概率。它只是自己完成那部分吗?
cross_val_score
在具有真实值的输入上训练模型,执行预测,然后将这些预测与真实值进行比较——评分步骤。这就是你传入 y
的原因:它是 true 值,即 "ground truth"。
通过指定scoring='roc_auc'
调用的roc_auc_score
函数依赖于y_true
和y_pred
:ground truth和基于[=16=的预测值] 适合您的模型。
所有监督学习方法(包括逻辑回归)都需要真实的 y
值来拟合模型。
拟合模型后,我们一般要:
- 进行预测,然后
- 对这些预测进行评分(通常基于 'held out' 数据,例如使用交叉验证)
cross_val_score
为您提供模型预测的交叉验证分数。但是要对预测进行评分,它首先需要进行预测,而要进行预测,它首先需要拟合模型,这需要 X
和 (true) y
.
如您所述,cross_val_score
接受不同的评分标准。因此,如果您选择 f1-score
,则在 cross-val-score
期间生成的模型预测将是 class 预测(来自模型的 predict()
方法)。如果您选择 roc_auc
作为您的指标,则用于对模型评分的模型预测将是概率预测(来自模型的 predict_proba()
方法)。
我正在使用 sklearn
包构建逻辑回归模型,然后对其进行评估。具体来说,我想使用交叉验证来这样做,但无法找到使用 cross_val_score
函数的正确方法。
根据我看到的 documentation and some '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
计算的概率。它只是自己完成那部分吗?
cross_val_score
在具有真实值的输入上训练模型,执行预测,然后将这些预测与真实值进行比较——评分步骤。这就是你传入 y
的原因:它是 true 值,即 "ground truth"。
通过指定scoring='roc_auc'
调用的roc_auc_score
函数依赖于y_true
和y_pred
:ground truth和基于[=16=的预测值] 适合您的模型。
所有监督学习方法(包括逻辑回归)都需要真实的 y
值来拟合模型。
拟合模型后,我们一般要:
- 进行预测,然后
- 对这些预测进行评分(通常基于 'held out' 数据,例如使用交叉验证)
cross_val_score
为您提供模型预测的交叉验证分数。但是要对预测进行评分,它首先需要进行预测,而要进行预测,它首先需要拟合模型,这需要 X
和 (true) y
.
cross_val_score
接受不同的评分标准。因此,如果您选择 f1-score
,则在 cross-val-score
期间生成的模型预测将是 class 预测(来自模型的 predict()
方法)。如果您选择 roc_auc
作为您的指标,则用于对模型评分的模型预测将是概率预测(来自模型的 predict_proba()
方法)。