r - 决策树的 ConfusionMatrix 错误输出 R
问题描述
嗨,我正在使用 R 训练决策树模型。尝试解释混淆矩阵时出现以下错误。
Error: `data` and `reference` should be factors with the same levels.
#######################决策树#####################
set.seed(3033)
intrain <- createDataPartition(y = new_columns$yyes, p= 0.7, list = FALSE)
training <- new_columns[intrain,]
testing <- new_columns[-intrain,]
#check dimensions of train & test set
dim(training);
dim(testing);
trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
set.seed(3333)
dtree_fit <- train(yyes ~., data = training, method = "rpart",
parms = list(split = "information"),
trControl=trctrl,
tuneLength = 10)
dtree_fit
prp(dtree_fit$finalModel, box.palette = "Reds", tweak = 1.2)
testing[1,]
predict(dtree_fit, newdata = testing[1,])
test_pred <- predict(dtree_fit, newdata = testing)
confusionMatrix(test_pred, testing$yyes ) #check accuracy
我的 test_pred 值给出如下结果,
测试$yyes
所以我认为问题在于二进制和小数。我怎样才能解决这个问题?
解决方案
您正在执行分类任务,但看起来您正在拟合回归树,这就是您在test_pred
. 此外,confusionMatrix()
从字面上看,想要因素。
yyes
您可以通过在拟合模型之前强制转换为一个因素来解决这两个问题。这应该rpart
暗示您想要一个分类树,然后您的预测将是具有相同水平的因素。
这是一个可重现的示例。
# Notice the coercion happens before doing anything else.
.iris <- iris %>% mutate(group = as.factor(group))
train = .iris[1:100,]
test = .iris[101:150,]
tree_fit <- train(group ~ . , data = train, method = 'rpart')
test_pred <- predict(tree_fit, test)
confusionMatrix(test_pred, test$group)
推荐阅读
- java - @Autowired 注解没有弹簧启动
- c++ - 为什么此自定义类型特征无法编译
- django - 如何在基于函数的视图中显示表单
- python-3.x - 在一个单元格中打印多行的虚线表格
- node.js - node-postgres 库:如何通过事件驱动的数据库插入来避免竞争条件?
- google-sheets - 谷歌表格 - Countif 公式计数单元格特定文本多个标准
- mysql - 复杂的mysql查询计数
- java - org.apache.ibatis.exceptions.PersistenceException
- unzip - IBM Sterling File Gateway - iFix zip - 解压缩失败
- google-sheets - 是否可以使用 sheet.spreadsheets v4 将空白表添加到谷歌电子表格?