R:$运算符中的RandomForest包错误对原子向量无效

时间:2015-05-27 03:41:36

标签: r

我正在尝试创建一个Random Forest多类分类器。但是,当我执行我的代码时,我在调用RandomForest时遇到以下错误:

结果错误$ training_classes:   $运算符对原子向量无效 电话:randomForest ... eval - > model.frame - > model.frame.default - > eval - > EVAL 执行暂停

这是我的代码:

#!/usr/bin/Rscript
library(randomForest);
library(tm)
training_classes <- readLines("incidents_training_classes.txt",)
training_data <- readLines("incidents_training_words.txt")
doc.vec <- VectorSource(training_data)
doc.corpus <- Corpus(doc.vec)
summary(doc.corpus)
doc.corpus <- tm_map(doc.corpus, removeNumbers)
doc.corpus <- tm_map(doc.corpus, removeWords, stopwords("english"))
DTM <- DocumentTermMatrix(doc.corpus, control=list(weighting=weightTfIdf,minWordLength=3))
DTM.common <- removeSparseTerms(DTM,.99)
# Convert DTM to a data frame
capture.output(DTM.dataframe <- as.data.frame(inspect(DTM.common))) -> .null
class.dataframe <- as.data.frame(training_classes, stringsAsFactors=TRUE) 
# Merge predictor variables and class labels
results <- cbind(DTM.dataframe,class.dataframe)
forest.rf <- randomForest( results$training_classes ~ .,importance=TRUE, data = results, ntree = 500);

结果数据框具有预期的尺寸。我没有运气就倾倒了谷歌。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果您指定data = results,则不需要$符号。试试:

fmla <- as.formula(training_classes ~.)
results$training_classes <- as.factor(results$training_classes)

forest.rf <- randomForest(fmla,importance=TRUE, data = results, ntree = 500);

应该立即解决问题。

此外,自变量不应包含任何NA。请同时分享“str(结果)”的输出。在森林中使用的因子变量不应超过32个类,请记住这一点。

答案 1 :(得分:0)

尝试仅使用公式中data.frame的列名称,例如training_classes ~ .。检查列名是否使用colnames(结果)正确设置。或者,您可以尝试x=, y=个参数而不是公式,请参阅?randomForest