【问题标题】:Sklearn roc_auc_score value for binary outcome and continuous outcome二元结果和连续结果的 Sklearn roc_auc_score 值
【发布时间】:2021-05-16 17:37:06
【问题描述】:

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

对于随机森林,输出是概率,如下所示。

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

对于 kNN 分类器,结果类似于二元

[0,0,1,...,1]

基本事实是二进制值。

我想知道我是否直接使用

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

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

【问题讨论】:

    标签: python machine-learning scikit-learn roc auc


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      不幸的是,您不能直接使用 roc_auc_score,因为它会抱怨连续值。这是有意义的,因为 roc-auc 评分对于分类问题很有用。如果您想处理此类连续值,则必须以仅包含表示标签的整数值的方式更新您的预测。对于二元分类问题,一种这样有用的策略是,您可以将所有高于 0.5 的预测(假设它们在 0 和 1 之间)设置为 1,其余的为 0。因为最终,得分大于 0.5 意味着您的方法倾向于将标签逐个标记,反之亦然。

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 2015-09-18
        • 2022-10-15
        • 2013-07-21
        • 2018-08-01
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        相关资源
        最近更新 更多