Я немного борюсь с конкретной проблемой.
Я хочу смоделировать дерево решений.
Мой набор данных выглядит сейчас так:
str(bWeightSantiago) 'data.frame':
160487 obs. of 13 variables:
$ BW: int 4175 2242 2487 3214 3412 5421 4152 1745 5247 3529 ...
$ married : logi TRUE FALSE TRUE TRUE TRUE TRUE ...
$ age : int 24 30 37 22 23 43 28 30 19 22 ...
$ black : logi TRUE FALSE FALSE TRUE TRUE FALSE ...
$ highschool : logi TRUE TRUE FALSE FALSE FALSE TRUE...
$ college: logi FALSE FALSE FALSE FALSE FALSE TRUE ...
$ hasChildren : logi FALSE FALSE FALSE TRUE FALSE FALSE ...
$ drugs: logi FALSE FALSE TRUE FALSE FALSE FALSE ...
$ weightgain : int 14 45 29 50 13 48 20 24 14 39 ...
$ alone: logi FALSE FALSE FALSE FALSE TRUE FALSE ...
$ livesinownhouse : logi TRUE FALSE TRUE TRUE TRUE TRUE ...
$ cig : int 5 25 0 5 0 0 0 10 0 0 ...
$ boy : logi FALSE FALSE TRUE FALSE TRUE FALSE ...
Я пытался смоделировать классификацию и дерево регрессии каждый в R . Переменная ответа - «BW» (= вес при рождении). Если я хочу смоделировать дерево классификации, я изменяю переменную BW на двоичную с помощью:
bWeightSantiago_class <- dplyr::mutate(bWeightSantiago, BW= as.factor(ifelse(BW < 2500, 1, 0)))
указывает на то, что все веса новорожденного ниже 2500 г = 1. Данные включают мертворожденных детей. Эта мутированная переменная ответа сохраняется в «bWeightSantiago_class»
Я пробовал 2 модели. Однажды модель с пакетом rpart
и однажды с пакетом partykit
.
rpart
Если я попытаюсь уместить дерево классификации, используя следующую функцию
fit1 <- rpart(BW~., data=bWeightSantiago_class, method="class")
У меня проблема в том, что
подходит не дерево, просто корень
Если я попытаюсь вписать дерево регрессии, используя ту же функцию (набор данных bWeightSantiago сейчас)
fit2 <- rpart(BW~., data=bWeightSantiago, method="anova")
Я получаю хорошо обрезанное дерево с 5 листьями.
partykit
С другой стороны: если я хочу смоделировать дерево регрессии или классификации с помощью функции ctree()
:
fit3 <- ctree(BW~., data = bWeightSantiago)
# дерево регрессии
fit4 <- ctree(BW~., data = bWeightSantiago_class)
# классификационное дерево
Я получаю огромные деревья (переоснащение). Попытка построить их показывает мне почти черный экран, потому что они не обрезаны. Если я пытаюсь удалить их с помощью функции prune()
, я получаю сообщение об ошибке:
prune(fit4, "AIC")
Ошибка в UseMethod ("prune"):
нет применимого метода для 'чернослива', примененного к объекту класса
"c ('BinaryTree', 'BinaryTreePartition')"
Но в среде данных в R говорится, что моя подходящая модель - Большое BinaryTree (210,3 Мб)
Как я могу решить эти проблемы?
Спасибо!