不能强迫上课"" amelia""到R中的data.frame

时间:2014-09-27 00:27:09

标签: r dataframe random-forest

我在R中使用Amelia包来处理缺失值。当我尝试使用推算数据训练随机森林时,我得到以下错误。我不知道如何将amelia类转换为数据框,这将是R中randomForest函数的正确输入。

train_data<-read.csv("train.csv")
sum(is.na(train_data))

impute<- amelia(x=train_data,m=5,idvars=c("X13"), interacs=FALSE)
impute<= as.data.frame(impute)

for(i in 1:impute$m) {  
  model <- randomForest(Y ~X1+X2+X3+X4+X5+X6,
                 data= as.data.frame(impute))
}

Error in as.data.frame.default(impute) : 
  cannot coerce class ""amelia"" to a data.frame

如果我使用输入到randomForest作为估算$ imputations [[i]],我会出现以下错误:

 model <- randomForest(Y ~X1+X2+X3+X4+X5+X6,
                 impute$imputations[[i]])
Error: $ operator is invalid for atomic vectors

任何人都可以建议我如何解决这个问题。这将是一个很大的帮助。

2 个答案:

答案 0 :(得分:0)

所以,我认为第一个问题是这一行:

impute<= as.data.frame(impute)

应该是:

impute <- as.data.frame(impute)

哪会引发错误。

多重插补用多个数据集替换数据,每个数据集都有不同的缺失值替换。这反映了那些缺失值预测的不确定性。通过将Amelia对象转换为数据帧,您尝试从5个数据帧中生成一个数据帧,并且如何执行此操作并不明显。

您可能希望研究更简单的插补形式(如通过平均值进行估算)。

答案 1 :(得分:-1)

这种情况正在发生,因为您正在尝试训练包含您所做插补信息的变量。它没有您需要训练的数据。您需要使用函数complete来组合数据集中的插补值。

impute <- amelia(x=train_data,m=5,idvars=c("X13"), interacs=FALSE)
impute <- complete(impute,1)
impute <- as.data.frame(impute)

在此之后,您将无法训练或预测数据。