发现了一个问题,以下两种计算auc的结果不一样
import sklearn.metrics as sklm
sklm.roc_auc_score(val_log["label"],val_log["pred_label"])
fpr, tpr, _ = sklm.roc_curve(val_log["label"], val_log["pred_score"])
sklm.auc(fpr, tpr)
第一种在我自己的数据上的结果只有大约0.55,而第二种结果有0.70
仔细查阅文档后第一种的参数事实上是错的,第二个不应该是预测标签而应该是预测分数,但是由于score的范围在0-1之间,这种输入错误不会收到函数的报错,而且在某些情况下(例如模型性能很好或很差)两者计算结果可能非常接近,可参考下图
把第一种计算方法略微修改一下,结果就一样了
sklm.roc_auc_score(val_log["label"],val_log["pred_score"])