0

当我尝试在 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

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

4

2 回答 2

4

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

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

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

randomForest(trainPredictors,trainActivity,proximity=TRUE,
  xtest=testPredictors,ytest=testActivity)
于 2013-03-10T11:20:44.943 回答
0

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

于 2020-01-03T09:00:06.787 回答