【问题标题】:Error in confusion matrix - "there must be at least 2 factors levels in the data"混淆矩阵中的错误 - “数据中必须至少有 2 个因子水平”
【发布时间】:2022-06-16 12:17:12
【问题描述】:

我正在尝试在数据框的每两列上构建一个混淆矩阵

>foreach (col = seq(1, ncol(df_intent_fac), 2), 
                   col2 = seq(2, ncol(df_intent_fac), 2)) %do% 
            {
              cfm_intent <- confusionMatrix(df_intent_fac[[col2]], df_intent_fac[[col]], 
                                            mode = 'everything', positive = "1")
            }
> dput(head(df_intent_fac[1:8, 1:8]))
structure(list(Expected...6 = structure(c(1L, 1L, 1L, 1L, 1L, 
1L), .Label = c("0", "1"), class = "factor"), Actual...7 = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), 
    Expected...9 = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", 
    "1"), class = "factor"), Actual...10 = structure(c(1L, 1L, 
    1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), 
    Expected...12 = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", 
    "1"), class = "factor"), Actual...13 = structure(c(1L, 1L, 
    1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), 
    Expected...15 = structure(c(2L, 1L, 2L, 1L, 1L, 1L), .Label = c("0", 
    "1"), class = "factor"), Actual...16 = structure(c(1L, 1L, 
    2L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")), row.names = c(NA, 
6L), class = "data.frame")
> dput(str(df_intent_fac))
'data.frame':   38 obs. of  264 variables:
 $ Expected...6  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...7    : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...9  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...10   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...12 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...13   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...15 : Factor w/ 2 levels "0","1": 2 1 2 1 1 1 1 1 1 1 ...
 $ Actual...16   : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Expected...18 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...19   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...21 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...22   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...24 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...25   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...27 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...28   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...30 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...31   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...33 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...34   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...36 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...37   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...39 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...40   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...42 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...43   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...45 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...46   : Factor w/ 1 level "0": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...48 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...49   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...51 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...52   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...54 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...55   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...57 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...58   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ Expected...60 : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...61   : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Expected...63 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...64   : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 1 1 1 1 ...
 $ Expected...66 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...67   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...69 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...70   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...72 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...73   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...75 : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...76   : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Expected...78 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...79   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...81 : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Actual...82   : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 2 1 1 1 ...
 $ Expected...84 : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Actual...85   : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Expected...87 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...88   : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Expected...90 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...91   : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Expected...93 : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Actual...94   : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ Expected...96 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...97   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...99 : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...100  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 2 1 1 ...
 $ Expected...102: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...103  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...105: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...106  : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 1 1 1 1 ...
 $ Expected...108: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...109  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...111: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...112  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...114: Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
 $ Actual...115  : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
 $ Expected...117: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...118  : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Expected...120: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...121  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ Expected...123: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ Actual...124  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ Expected...126: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...127  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 2 1 1 1 ...
 $ Expected...129: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...130  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...132: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...133  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...135: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...136  : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 2 1 1 2 ...
 $ Expected...138: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...139  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...141: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...142  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...144: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...145  : Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Expected...147: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Actual...148  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...150: Factor w/ 2 levels "0","1": 1 1 2 1 1 1 1 1 1 1 ...
 $ Actual...151  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ Expected...153: Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
  [list output truncated]
NULL

我收到一个错误和一些警告

Error in { : 
  task 79 failed - "there must be at least 2 factors levels in the data"
In addition: Warning messages:
1: In confusionMatrix.default(df_intent_fac[[col2]], df_intent_fac[[col]],  :
  Levels are not in the same order for reference and data. Refactoring data to match.
2: In confusionMatrix.default(df_intent_fac[[col2]], df_intent_fac[[col]],  :
  Levels are not in the same order for reference and data. Refactoring data to match.
3: In confusionMatrix.default(df_intent_fac[[col2]], df_intent_fac[[col]],  :
  Levels are not in the same order for reference and data. Refactoring data to match.

我通过查看 str(df_intent_fac) 了解警告的原因,很少有列只有一个级别。所以我尝试删除这些列并运行相同的代码。这次我得到的只是错误而不是警告。有谁知道如何解决它并解释其背后的原因?

在这方面的任何帮助将不胜感激。

【问题讨论】:

  • 不要dput()数据的结构,使用dput(head(df_intent_fac[1:8, 1:8]))之类的东西。这应该给我们前 8 行和前 8 列。在这个简化的数据集上运行您的代码,我们将能够轻松地重现它。
  • 是的,我使用dput() 的唯一动机是表明很少有列只有一个级别,例如。最后打印列Actual...46NULL。我不确定为什么它会在输出结束时打印出来。
  • 另外,如果我这样做levels(df_intent_fac),它会返回NULL

标签: r confusion-matrix


猜你喜欢
  • 2015-07-12
  • 2021-05-28
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多