我正在使用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
计算的概率。它只是自己做那部分吗?
cross_val_score
用真值训练输入的模型,执行预测,然后将这些预测与评分步骤的真值进行比较。这就是为什么要传入y
:这是true值,即“基本真相”。通过指定} 函数依赖于
scoring='roc_auc'
调用的^{y_true
和y_pred
:模型的基本事实和基于X
的预测值。所有有监督的学习方法(包括logistic回归)都需要真实的
y
值来拟合模型。拟合模型后,我们通常希望:
cross_val_score
为您提供模型预测的交叉验证分数。但要对预测进行评分,首先需要进行预测,然后进行预测,首先需要符合模型,这需要X
和(true)y
。cross_val_score
正如您所注意到的,接受不同的评分标准。因此,如果选择f1-score
,那么在cross-val-score
期间生成的模型预测将是类预测(来自模型的predict()
方法)。如果选择roc_auc
作为度量标准,则用于对模型进行评分的模型预测将是概率预测(来自模型的predict_proba()
方法)。相关问题 更多 >
编程相关推荐