使用randomForest时,错误“x和xtest必须具有相同的列数”

时间:2013-03-10 03:44:28

标签: r

当我尝试在R中使用randomForest时出现错误 当我进入

basic3prox  <- randomForest(activity ~.,data=train,proximity=TRUE,xtest=valid)

其中train是训练数据的数据帧,valid是测试数据的数据帧, 我收到以下错误

Error in randomForest.default(m, y, ...) : 
  x and xtest must have same number of columns

但他们确实拥有相同数量的列。我使用subset()从相同的原始数据集中获取它们,当我运行dim()时,我得到

  

暗淡(火车)

[1] 3237 563

  

暗淡(有效)

[1] 2630 563

所以我不知道这里有什么问题。

2 个答案:

答案 0 :(得分:4)

不,他们没有; train有562个预测变量列和1个决策列,因此valid必须有562列(相应的决策必须传递给ytest参数)。
所以调用应该如下:

randomForest(activity~.,data=train,proximity=TRUE,
  xtest=valid[,names(valid)!='activity'],ytest=valid[,'activity'])

然而,这是一个肮脏的黑客,它将失败更复杂的公式,因此它不应该被使用(即使作者试图禁止它,正如Joran在评论中指出的那样)。正确,简单和快速的方法是使用单独的对象作为预测变量和决策而不是公式,如下所示:

randomForest(trainPredictors,trainActivity,proximity=TRUE,
  xtest=testPredictors,ytest=testActivity)

答案 1 :(得分:0)

也许这不是错误。当您使用git rm时,您会得到不同的号码。这意味着训练数据和有效数据确实具有不同的暗淡程度。我遇到了这样的问题。我的解决方案如下:首先,我使用dim()在训练数据和有效数据中显示变量。我看到它们确实有不同的变量。其次,我使用names()“减去”剩余变量(如果训练数据的变量多于有效数据,则减去训练数据中的剩余变量,反之亦然。)之后,训练数据和有效数据具有相同的变量。您可以使用 randomForest