【发布时间】: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...46和NULL。我不确定为什么它会在输出结束时打印出来。 -
另外,如果我这样做
levels(df_intent_fac),它会返回NULL
标签: r confusion-matrix