我正在尝试创建一个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);
结果数据框具有预期的尺寸。我没有运气就倾倒了谷歌。
非常感谢任何帮助。
答案 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
。