我正在尝试计算一个非常大的数据帧的多分类问题的混淆矩阵,该矩阵被划分并缩放为 Train_Scale 和 Test_Scale(训练集的比例用于缩放测试)集。
Ranger是用来做建模的:
set.seed(123)
library(ranger)
library(caret)
Class.ranger <- ranger(Class~., data = Train_Scale, num.trees = 5000, importance = "impurity", save.memory = TRUE, probability = TRUE)
变量 Class 有 5 个级别:
str(Test_Scale$Class)
Factor w/ 5 levels "A","B",..: 5 1 1 1 1 5 5 5 1 1 ...
在测试集上进行验证,如下所示:
set.seed(123)
probabilitiesClass <- predict(Class.ranger, data = Test_Scale, num.trees = 5000, type='response', verbose = TRUE)
probabilitiesClass 是一个由 5 组成的列表,如下所示:
尝试通过混淆矩阵解释结果时出现以下错误:
> caret::confusionMatrix(Test_Scale$Class, probabilitiesClass$predictions)
Error: `data` and `reference` should be factors with the same levels.
上图中的预测是否应该是因子(因为它目前是双倍的),并且因为 Class 是具有 5 个级别的因子?
或者,尝试使用表(注意:也没有出现 NA 值)会出现以下错误:
table(Test_Scale$Class, probabilitiesClass$predictions)
Error in table(Test_Scale$Class, probabilitiesClass$predictions):
all arguments must have the same length
出了什么问题以及如何使用 ranger(首选,因为插入符号仅解释 upt0 53 个级别?)和插入符号获得多类分类的混淆矩阵?