在R中构建随机森林报错:randomForest函数执行失败
解决randomForest误将分类任务识别为回归的问题
问题根源
randomForest包判断任务类型的逻辑很直接:如果目标变量y是数值型(包括整数),哪怕只有0/1两个取值,它也会默认执行回归任务;只有当y是**因子(factor)**类型时,才会正确识别为分类任务。你示例里的target是用sample(0:1,...)生成的整数,属于数值类,所以触发了回归警告,真实数据报错大概率也是这个原因。
解决方法
把目标变量转换成因子类型就行,有两种简单方式:
方式1:创建数据集时直接定义target为因子
library(randomForest) set.seed(123) data <- data.frame( var1 = rnorm(100), var2 = sample(letters[1:3], 100, replace = TRUE), # 直接把target设为因子 target = factor(sample(0:1, 100, replace = TRUE)) ) x <- data[, -ncol(data)] y <- data[, ncol(data)] # 构建分类模型,无警告 model <- randomForest(x = x, y = y, ntree = 500)
方式2:拆分后转换y的类型
如果已经有现成的数据集,直接转换y即可:
library(randomForest) set.seed(123) data <- data.frame( var1 = rnorm(100), var2 = sample(letters[1:3], 100, replace = TRUE), target = sample(0:1, 100, replace = TRUE) ) x <- data[, -ncol(data)] # 把y转为因子 y <- factor(data[, ncol(data)]) model <- randomForest(x = x, y = y, ntree = 500)
验证模型类型
运行完代码后,查看模型输出会显示Type of random forest: classification,说明已经是分类模型了,后续可以正常做预测和变量重要性评估。
内容的提问来源于stack exchange,提问作者wzj
相关产品推荐
相关产品推荐

