Мое лучшее предположение заключается в том, что проблема заключается в факторе LeagueIndex
.Эта переменная была представлена в виде порядковых данных (от бронзового до профессионального) и преобразована в символьный фактор "1", "2", "3"
и т. Д. До "8"
.
В дополнение к вашей ошибке с rpart
она выглядит каквы получаете предупреждение при разбиении данных на основе этого фактора:
В createDataPartition (skillcraft $ LeagueIndex, p = 0,8, list = F):
В некоторых классах нет записей (8) иони будут проигнорированы
Очевидно, что нет записей с LeagueIndex
из 8. Похоже, что это произойдет после того, как вы выберете для завершенных дел здесь:
skillcraft <- skillcraft[complete.cases(skillcraft),]
И всеLeagueIndex=8
дел удаляются, так как в них будут отсутствовать данные для Age
, HoursPerWeek
и TotalHours
(приведено к NA
) при преобразовании через as.numeric
.
skillcraft[which(skillcraft$LeagueIndex == 8), c("Age", "HoursPerWeek", "TotalHours")]
Age HoursPerWeek TotalHours
3341 ? ? ?
3342 ? ? ?
3343 ? ? ?
...
Предполагается, что выЯ все еще хотел фактор, я полагаю, что если вы избавитесь от неиспользованного уровня факторов, это сработает, например:
skillcraft$LeagueIndex <- droplevels(skillcraft$LeagueIndex)
до разделения данных.(Вы могли бы просто выполнить на тренировочном наборе в этом примере, но вы хотели бы иметь те же уровни факторов в ваших тестовых и обучающих наборах.)