【问题标题】:Confusion matrix R混淆矩阵 R
【发布时间】:2026-02-06 14:40:01
【问题描述】:

我正在为这个混淆矩阵应用程序苦苦挣扎:

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

感谢您的帮助!

【问题讨论】:

    标签: r confusion-matrix


    【解决方案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)
    

    分配为正类的类是因子实例中级别向量的名字。

    【讨论】: