R randomForest包的classCenter函数中的NA

时间:2013-07-02 07:58:09

标签: r random-forest na

我正在尝试使用randomForest程序包版本4.6-7为R编程语言版本2.13.1检索两类分类问题的类原型。为此,我调用classCenter函数。问题是它有时会输出无效结果,即返回的类原型中的一个或两个完全由NA值组成。发生这种情况时,我在R控制台中获得以下内容:

There were 50 or more warnings (use warnings() to see the first 50)

键入warnings()会给出以下50次:

1: In mean.default(sort(x, partial = half + 0L:1L)[half +  ... :
  argument is not numeric or logical: returning NA

重要提示:我注意到该函数为在相同数据上学习并使用相同设置的不同随机森林模型提供了不同的输出,即,它可以返回两个类原型,但不返回另一个模型。这意味着至少有时我会得到有效的结果。

我在R控制台中使用此代码:

library(randomForest)
mydata <- read.csv("mydata.csv", header=TRUE)
myrf <- randomForest(x=mydata[,-1:-2], y=mydata[,1], ntree=1000, mtry=33, importance=TRUE, proximity=TRUE)
mycc <- classCenter(mydata[,-1:-2], mydata[,1], myrf$prox)
print(mycc)

CSV文件的第一列包含类标签,第二列被忽略。有5,000个肯定的例子和5,000个负面的例子,都有135个特征/变量,没有缺失值(见下文)。

我已经在stackoverflow和google上搜索了这个问题的解决方案,但无济于事。 randomForest包的documentation未指定“all-NAs”返回值。我不得不说我不熟悉R并且使用文档和直觉破解了这段代码。

编辑:mydata[!complete.cases(mydata),]为空,即输入数据中没有丢失(NA)值。可以找到summary(mydata)mydata[1:10,]的输出here(您可能希望在文本编辑器中查看文件而不进行自动换行,因为文本格式为宽)。当然,前10行不足以重现错误,但我不允许发布整个数据集。

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,今天摆脱了它。 你可以做几件事 (1)请删除具有空值或NA值OR的列 (2)删除具有空值或NA值OR的行 (3)用适当的处理方法(如果可行)替换所有列中的空值或NA值。谢谢