我正在尝试使用用于编程语言版本 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 行不足以重现错误,但我不允许发布整个数据集。