0

我正在尝试使用用于编程语言版本 2.13.1的randomForest包版本 4.6-7来检索二类分类问题的类原型。R为此,我调用了该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没有指定“all-NAs”返回值。我不得不说我不熟悉 R 并且使用文档和直觉破解了这段代码。

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

4

1 回答 1

0

我也遇到了同样的问题,今天解决了。您可以做几件事(1)请删除具有空值或 NA 值的列或(2)删除具有空值或 NA 值的行或(3)用适当的处理(如平均值)替换所有列中的空值或 NA 值,中值或众数(如果可行)。谢谢

于 2013-07-04T12:03:18.003 回答