【发布时间】:2021-10-09 16:00:18
【问题描述】:
我正在尝试计算一个非常大的数据框的多分类问题的混淆矩阵,它被划分并缩放为 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(首选,因为 caret 仅解释 upt0 53 个级别?)和 caret 获得多类分类的混淆矩阵?
【问题讨论】:
标签: r validation prediction confusion-matrix r-ranger