我正在努力解决这个混乱矩阵应用程序:
lvs <- c("normal", "abnormal")
truth <- factor(rep(lvs, times = c(86, 258)),
levels = rev(lvs))
pred <- factor(
c(
rep(lvs, times = c(54, 32)),
rep(lvs, times = c(27, 231))),
levels = rev(lvs))
xtab <- table(pred, truth)
基本上,我对第2代,第6行和第7行感到困惑。下面您可以在运行代码后看到结果。但我仍然感到困惑,我必须把它放在括号内。当然,我知道这些值只是一个例子,但在教程中并没有解释这些值的含义。
https://artax.karlin.mff.cuni.cz/r-help/library/caret/html/confusionMatrix.html
truth
pred abnormal normal
abnormal 231 32
normal 27 54
感谢您的帮助!
答案 0 :(得分:1)
我认为你对他们创建数据集的方式比对 confusionMatrix 本身更加困惑。所以我将尝试逐步解释这些问题。
在这里,他只是创建了稍后在数据生成中使用的级别名称。
lvs <- c("normal", "abnormal")
现在,他生成了一个矢量用作测试集的真实标签,他用rep
复制了级别名称,对于每个级别,他设置了一个特定的次数。函数参数。然后,他将向量转换为factor
,并按级别名称的相反顺序指定级别。相反的顺序是组织函数table
将输出数据的顺序。
truth <- factor(rep(lvs, times = c(86, 258)),levels = rev(lvs))
在这里,它与上面的过程相同,加入两个rep
函数只是为了弄乱数据并模拟预测器的响应。
pred <- factor( c( rep(lvs, times = c(54, 32)),
rep(lvs, times = c(27, 231))),
levels = rev(lvs) )
最后,使用table
函数创建混淆矩阵,使用此表可以分析许多指标,如总体准确性,敏感性和特异性。已使用caret::confusionMatrix
计算这些指标。
xtab <- table(pred, truth)
caret::confusionMatrix(pred, truth)
指定为正类的类是因子实例中级别向量的第一个名称。