使用rpart模型生成混淆矩阵时遇“Matrix must have equal dimensions”错误求助
问题原因及解决办法
报错核心原因:使用
rpart进行分类任务时,默认调用predict()函数返回的是每个样本对应各类别的概率矩阵,而confusionMatrix()要求输入的预测值是与真实标签维度一致的类别向量,两者维度不匹配就会触发"matrix must have equal dimensions"错误。最简解决方法:
在predict()中指定type="class"参数,直接输出预测类别而非概率矩阵:fit <- rpart(taste ~ ., data = train, method="class", control = rpart.control(cp = 0.01)) summary(fit) # 添加type="class"获取类别预测 knn_prediction <- predict(fit, test, type="class") confusionMatrix(knn_prediction, test$taste)备选方案(从概率矩阵转换类别):
如果需要保留概率矩阵的同时生成混淆矩阵,可以通过以下方式将概率矩阵转为类别向量:# 获取概率矩阵 knn_prob <- predict(fit, test) # 提取概率最大的类别 knn_prediction <- colnames(knn_prob)[max.col(knn_prob)] # 生成混淆矩阵 confusionMatrix(knn_prediction, test$taste)
内容的提问来源于stack exchange,提问作者Jaspreet Singh
相关产品推荐
相关产品推荐

