随机森林预测
Posted
技术标签:
【中文标题】随机森林预测【英文标题】:Random Forest Predictions 【发布时间】:2014-08-07 15:12:59 【问题描述】:我正在为我正在为一堂课做的家庭作业寻找一些指导。我们得到一个包含 14K 观测值的数据集,并要求我们建立一个预测模型。我将数据集子集到训练和测试中(4909 个观察),这里我使用 caret 包,它预测最后一个变量“classe”。我提取了接近零的变量并建立了模型,但是当我尝试进行预测时,我只得到了 97 个预测。我查看了帮助文件,但仍然无法弄清楚我哪里出错了。任何提示将不胜感激。
代码如下:
set.seed(1234)
pml.training <- read.csv("./data/pml-training.csv")
#
library(caret)
inTrain <- createDataPartition(y=pml.training$classe, p=0.75, list=FALSE)
training <- pml.training[inTrain,]
testing <- pml.training[-inTrain,]
# Pull out the Near Zero Value (NZV)
nzv <- nearZeroVar(training, saveMetrics=TRUE)
omit <- which(nzv$nzv==TRUE)
training <- training[,-omit]
testing <- testing[,-omit]
# Fit the model
modFit <- train(classe ~., method="rf", data=training)
modFit
print(modFit$finalModel)
plot(modFit)
# Try and predict on the testing model
pred <- predict(modFit, newdata=testing)
testing$predRight <- pred==testing$classe
print(table(pred, testing$classe))
谢谢,帕特 C。
【问题讨论】:
【参考方案1】:你检查了吗
sum(complete.cases(subset(testing, select = -classe)))
?
【讨论】:
是的,它是 97,所以预测函数只预测完整的类,因此我应该估算数据。 @ptcesq 否。算法无法预测那些缺少预测变量值的情况/观察。它预测所有预测值都可用的情况(在这种情况下为 97)。如果你想预测其余的,你要么需要在训练中忽略那些在测试集中大部分缺失的变量,要么在测试集中估算缺失值。 谢谢,我会试试 rfImpute()。以上是关于随机森林预测的主要内容,如果未能解决你的问题,请参考以下文章