#r #prediction #random-forest
#r #предсказание #случайный лес
Вопрос:
Я ищу некоторые рекомендации по домашнему заданию, над которым я работаю для класса. Нам предоставляется набор данных с 14 тыс. наблюдений, и нас просят построить модель прогнозирования. Я подразделяю набор данных на обучение и тестирование (4909 наблюдений), здесь я использую пакет каретки, который предсказывает последнюю переменную «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))
Спасибо, Пэт С.
Ответ №1:
Вы проверили
sum(complete.cases(subset(testing, select = -classe)))
?
Комментарии:
1. Да, это 97, поэтому функция прогнозирования прогнозирует только для полных классов, поэтому я должен вменять данные.
2. @ptcesq Нет. Алгоритм не может предсказать для тех случаев / наблюдений, для которых отсутствуют значения предиктора. Он предсказывает те случаи, когда доступны все значения предиктора (97 в данном случае). Если вы хотите предсказать остальное, вам нужно либо опустить те переменные в обучении, которые в основном отсутствуют в тестовом наборе, либо приписать недостающие значения в тестовом наборе.
3. Спасибо, я попробую rfImpute() .