【问题标题】:R multiclass/multinomial classification ROC using multiclass.roc (Package ‘pROC’)使用 multiclass.roc(包‘pROC’)的 R 多类/多项式分类 ROC
【发布时间】:2015-03-21 06:48:46
【问题描述】:

我很难理解 multiclass.roc 参数的外观。 这是我的数据快照:

> head(testing.logist$cut.rank)
[1] 3 3 3 3 1 3
Levels: 1 2 3
> head(mnm.predict.test.probs)
              1            2          3
9  1.013755e-04 3.713862e-02 0.96276001
10 1.904435e-11 3.153587e-02 0.96846413
12 6.445101e-23 1.119782e-11 1.00000000
13 1.238355e-04 2.882145e-02 0.97105472
22 9.027254e-01 7.259787e-07 0.09727389
26 1.365667e-01 4.034372e-01 0.45999610
> 

我尝试使用以下命令调用 multiclass.roc:

multiclass.roc(
        response=testing.logist$cut.rank,
        predictor=mnm.predict.test.probs,
        formula=response~predictor
        )

但我自然会得到一个错误:

Error in roc.default(response, predictor, levels = X, percent = percent,  : 
  Predictor must be numeric or ordered.

当它是一个二元分类问题时,我知道“预测器”应该包含概率(每个观察一个)。但是,在我的例子中,我有 3 个类,所以我的预测器是一个行列表,每行有 3 列(或 3 个值的子列表)对应于每个类的概率。 有谁知道我的“预测器”应该是什么样子而不是它目前的样子?

【问题讨论】:

    标签: r roc multinomial proc-r-package


    【解决方案1】:

    pROC 包并非真正设计用于处理这种您获得多个预测(作为每个类的概率)的情况。通常你会评估你的 P(class= 1)

    multiclass.roc(
        response=testing.logist$cut.rank,
        predictor=mnm.predict.test.probs[,1])
    

    然后用 P(class= 2) 和 P(class= 3) 再做一次。或者更好的是,确定最有可能的类别:

    predicted.class <- apply(mnm.predict.test.probs, 1, which.max)
    multiclass.roc(
        response=testing.logist$cut.rank,
        predictor=predicted.class)
    

    multiclass.roc 视为一种玩具,有时会有所帮助,但很可能无法真正满足您的需求。

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 2016-08-06
      • 2018-01-02
      • 2018-10-23
      • 2016-03-14
      • 2012-07-10
      • 2020-11-27
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多