r

时间:2015-04-29 12:28:42

标签: r random-forest predict

我一直在使用randomForest包作为分类模型,只有分类因素作为预测因子。当测试中有新级别不在训练中时,预测功能通常会失败。为了解决这个问题,我添加了以下缺失的级别:

mname<-get(model)

for ( k in 1:ncol(dataFrame))
{
  col<-names(dataFrame[k])
  modelLevels <- mname$forest$xlevels[[col]]
  orig<-levels(dataFrame[,k])
  misses <-setdiff(modelLevels,orig)
  origOrdered <- orig[order(match(orig,modelLevels))] # Not sure if ordering matters
  missOrdered <- misses[order(match(misses,modelLevels))] # Not sure if ordering matters
  if(length(misses) > 0) { levels(dataFrame[,k]) <- as.character(c(origOrdered,missOrdered)) }
}

prediction <- data.frame(predict(mname,dataFrame,type = "prob"))$X1

此预测根据为预测提供的数据帧的大小,返回相同输入向量的不同值。

例如,如果我发送一个只有2行的数据帧,则返回0,0的值,而如果我传递一个包含相同两行的更大的数据帧,它会为相同的两行抛出0.066667的预测值?

有人可以澄清这种行为的原因是什么?我无法在此处分享数据。

0 个答案:

没有答案