You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言Random Forest模型生成混淆矩阵时遇类型错误求助

解决Random Forest混淆矩阵报错:Error in !all.equal(nrow(data), ncol(data)) : invalid argument type

错误原因

你的代码中目标变量price是数值型,randomForest默认会将其识别为回归任务,预测结果p1是连续数值。而confusionMatrix()是专门为分类任务设计的函数,无法处理回归场景下table(testData$price, testData$p1)生成的稀疏交叉表,因此抛出参数类型错误。

解决方案

根据你的实际任务类型选择对应方案:

方案1:如果是分类任务(price为离散类别)

先将price转换为因子类型,让randomForest执行分类任务:

# 先把price转为因子(确保是分类任务)
completeData$price <- as.factor(completeData$price)

ind <- sample(2, nrow(completeData), replace = TRUE, prob = c(0.7, 0.3))
trainData <- completeData[ind == 1, ]
testData <- completeData[ind == 2, ]

rf1 <- randomForest(price~., data = trainData)
p1 <- predict(rf1, newdata = testData)

# 生成混淆矩阵
confusionMatrix(table(testData$price, p1))

方案2:如果是回归任务(price为连续数值)

混淆矩阵不适用回归任务,改用回归评估指标:

# 加载Metrics包(如果没安装先执行install.packages("Metrics"))
library(Metrics)

# 计算回归评估指标
mae_value <- mae(testData$price, p1)  # 平均绝对误差
rmse_value <- rmse(testData$price, p1) # 均方根误差
r_squared <- cor(testData$price, p1)^2 # 决定系数

cat("MAE:", mae_value, "\nRMSE:", rmse_value, "\nR²:", r_squared)
# 也可以直接查看randomForest模型自带的OOB指标
print(rf1)

额外注意

如果你的price确实是分类变量但未转因子,randomForest会误判为回归任务,这是最常见的触发该错误的原因。确认数据类型是关键。

内容的提问来源于stack exchange,提问作者Doc.s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 01:51:03