我很难理解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个值的子列表)对应于每个类别的概率。
有谁知道我的“预测变量”应该是什么样子,而不是当前的样子?
最佳答案
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
视为有时会有用的玩具,但很可能无法真正满足您的需求。