混乱矩阵的构建

问题描述 投票:0回答:1

我有一个关于下面链接中混淆矩阵的构造的问题。游侠预测数据框架中每一行的等级概率。

例如,我有以下代码(如链接中的答案所解释的)。

library(ranger)
library(caret)

idx = sample(nrow(iris),100)
data = iris
data$Species = factor(ifelse(data$Species=="versicolor",1,0))
Train_Set = data[idx,]
Test_Set = data[-idx,]

mdl <- ranger(Species ~ ., ,data=Train_Set,importance="impurity", save.memory = TRUE, probability=TRUE)
probabilities <- as.data.frame(predict(mdl, data = Test_Set,type='response', verbose = TRUE)$predictions)
max.col(probabilities) - 1

调用

confusionMatrix(table(Test_Set$Species, max.col(probabilities)-1))

产量。enter image description here

而且,用这个

caret::confusionMatrix(table(max.col(probabilities) - 1,Test_Set$Species))

给予 enter image description here

由于tp、tn、fp、fn的切换,灵敏度、特异性、ppv、npv的值不同,哪种创建混淆矩阵的方法是正确的?

如果我要求正类为1,而不是使用

caret::confusionMatrix(table(max.col(probabilities) - 1,Test_Set$Species), positive = '1')

我得到enter image description here

那么,矩阵中的值是tp=13,tn=36,fp=0,fn=1,正确吗?

我对如何读出混淆矩阵的值感到困惑。

r statistics classification caret r-ranger
1个回答
1
投票

我已经理解了混淆矩阵的构造,以及如果类别发生变化时条目的作用。

使用以下方法得到的类0的混淆矩阵为

caret::confusionMatrix(table(max.col(probabilities) - 1,Test_Set$Species), positive = '0')

和第1级的,使用

caret::confusionMatrix(table(max.col(probabilities) - 1,Test_Set$Species), positive = '1')

是一样的,而且

enter image description here

在0级的情况下:tp=36,tn=13,fp=1,fn=0,在1级的情况下:tp=13,tn=36,fp=0,fn=1(tp和tn的作用,以及fp和fn的作用是互换的)。

© www.soinside.com 2019 - 2024. All rights reserved.