在 sklearn 中使用 cross_val_score 生成阴性预测值以进行模型性能评估

Generate negative predictive value using cross_val_score in sklearn for model performance evaluation

作为评估模型指标的一部分,我想在 sklearn 中使用 cross_val_score 为二元分类模型生成阴性预测值。

在下面的示例中,我在 cross_val_score 中设置 'scoring' 参数来计算和打印 'precision'(10 倍交叉验证的平均值和标准偏差)以获得阳性预测值型号:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
log=LogisticRegression()    
log_prec = cross_val_score(log, x, y, cv=10, scoring='precision')
print("PPV(mean, std): ", np.round(log_prec.mean(), 2), np.round(log_prec.std(), 2))

我如何使用类似上述代码行的东西从 cross_val_score 方法中生成阴性预测 value/NPV(预测阴性为真阴性的可能性)?

sklearn 提供了许多评分选项(例如:roc_auc、召回率、准确率、F1 等)但不幸的是,没有一个用于 NPV...

对于二元分类问题,您可以反转标签定义。然后 PPV 将对应于您原始问题中的 NPV

您可以使用 make_scorer to pass in pos_label=0 to the precision score function (metrics.precision_score) 来计算 NPV。像这样:

from sklearn.metrics import make_scorer, precision_score
npv = cross_val_score(log, x, y, cv=10, scoring=make_scorer(precision_score, pos_label=0))

有关详细信息,请参阅此 sklearn example