Странное поведение для функции предиката ()

В настоящее время я прохожу курс "Практическое машинное обучение" у Coursera и сталкиваюсь со странным поведением с помощью функции предикторов. Вопрос, который был задан, состоял в том, чтобы обучить дерево, а затем сделать некоторые прогнозы. Чтобы не публиковать здесь ответ, я изменил набор данных, используемый для решения проблемы. Код выглядит следующим образом:

rm(list = ls())
library(rattle)
data(mtcars)
mtcars$vs = as.factor(mtcars$vs)
set.seed(125)
model = train(am ~ ., method = 'rpart', data = mtcars)
print(model)
fancyRpartPlot(model$finalModel)

sampleData = mtcars[1,]
sampleData[1,names(sampleData)] = rep(NA, length(names(sampleData)))
sampleData[1, c('wt')] = c(4)
predict(model, sampleData[1,], verbose = TRUE)

В приведенном выше коде есть два основных раздела. Первый строит дерево, а второй (где sampleData начинается) создает небольшой набор данных для применения модели. Чтобы убедиться, что у меня точно такая же структура, что и у исходных данных, я просто копирую первую строку набора обучающих данных, а затем устанавливаю для всех столбцов значение NA, Затем я помещаю данные только в те столбцы, которые нужны дереву решений (в данном случае wt переменная).

Когда я выполняю приведенный выше код, я получаю следующий результат:

Number of training samples: 32 
Number of test samples:     0 

rpart : 0 unknown predictions were added

numeric(0)

Для справки ниже приведена структура дерева:

fancyRpartPlot(model$finalModel)

Может ли кто-нибудь помочь мне понять, почему predict функция не возвращает прогнозируемое значение для sampleData что я предоставил?

1 ответ

Решение

К сожалению, хотя rpart только использовал wt переменная в разделении, предсказание все еще требует присутствия других. Используйте набор данных с образцами столбцов:

> predict(model, mtcars[1,])
[1] 0.8571429

Максимум

Другие вопросы по тегам