将随机森林设置为分类器。

7

我正在尝试对一些数据进行随机森林分类,其中类别变量是二进制的(要么是1,要么是0)。这是我运行的代码:

forest.model <- randomForest(x = ticdata2000[,1:85], y = ticdata2000[,86], 
                       ntree=500,
                       mtry=9,
                       importance=TRUE,
                       norm.votes=TRUE,
                       na.action=na.roughfix,
                       replace=FALSE,
                             )

但是当森林到达末尾时,我会遇到以下错误:

Warning message:
In randomForest.default(x = ticdata2000[, 1:85], y = ticdata2000[,  :
  The response has five or fewer unique values.  Are you sure you want to do regression?

当然不是。我不想进行回归分析。我的单一离散变量只有两个类别。当我用这个模型进行预测时,我得到的是连续的数字,而我想要的是一个由0和1组成的列表。请问有人可以告诉我我哪里做错了,为什么会使用回归而不是分类呢?

1个回答

13

使用as.factor(或只使用factor)将您的响应列更改为因子。由于您将该变量存储为数字 0和1,因此R正确地将其解释为数字变量。如果您希望R以不同的方式处理它,则必须告诉它。

这在y参数的文档中提到:

  

响应向量。如果是因子,则假定为分类,否则假定为回归。如果省略,则randomForest将以无监督模式运行。


请明确说明。当前的randomForest pdf文件没有直接关于Y参数的信息。 - mccurcio
@oaxacamatt,我不确定你的评论是针对我的回答吗?据我所知,我的块引用仍然是CRAN当前版本文档的直接引用。我是否误解了你的意思? - joran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接