r-我如何使用机器学习模型来预测特征略有不同的数据



我有一个在一堆NLP数据上训练的randomForest模型(每个单词的tf idf值(。我想用它来预测一个新的数据集。模型中的特征与新数据中的特征重叠,但并不完全匹配,因此当我对新数据进行预测时,我会得到:

Error in predict.randomForest(object = model, newdata = new_data) : 
variables in the training data missing in newdata

我想通过排除模型中所有没有出现在新数据中的特征,以及新数据中所有没有显示在模型中的特征来避免这个错误。暂时不考虑对模型准确性的影响(这将大大减少特征的数量,但仍有很多可以预测的(,我做了这样的事情:

model$forest$xlevels <- model$forest$xlevels[colnames(new_data)]
# and vice versa
new_data <- new_data[names(model$forest$xlevels)]

只要names(model$forest$xlevels) == colnames(new_data)为每个特征名称返回TRUE,这就起到了作用。

然而,当我试图预测得到的new_data时,我仍然得到variables in the training data missing in newdata误差。我很确定我正在修改模型的正确部分(model$forest$xlevels(,那么为什么它不起作用呢?

我认为你应该换一种方式。也就是将缺失的列添加到新数据中。

当您使用单词包时,某些新数据批次中不存在的单词是很常见的。这些缺失的单词应该被编码为一列零。

# do something like this (also exclude the target variable, obviously)
names_missing <- names(traindata)[!names(traindata) %in% names(new_data)]
new_data[,names_missing] <- 0L

然后你应该能够预测

最新更新