Sklearn roc_auc_score 值用于二元结果和连续结果

问题描述

我正在尝试使用 sklearn 的 roc_auc_score 来评估两个模型。第一个随机森林,第二个是 kNN 分类器。这是一个二元分类问题。但是我有一个问题,因为这两个模型的输出类型不同。

对于随机森林,输出是概率,一些想法如下。

[0.1,0.4,0.6,...,0.9]

对于 kNN 分类器,结果是二进制的

[0,1,1]

基本事实是二进制值。

不知道是不是直接用

from sklearn.metrics import roc_auc_score
roc_auc_score(labels,predictions)

这两个模型的 roc_auc 值是否具有可比性?由于第一个是连续输出,另一个是离散输出?或者我也应该将第一个转换为二进制?像0.5以下的元素是0,0.5以上的元素是1?

解决方法

KNN 分类器有一个方法 predict_proba,它应该返回概率 - 参见 documentation