Попытка смоделировать дерево решений в R приводит к проблемам - PullRequest
0 голосов
/ 31 октября 2018

Я немного борюсь с конкретной проблемой.

Я хочу смоделировать дерево решений.

Мой набор данных выглядит сейчас так:

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 Мб)

Как я могу решить эти проблемы?

Спасибо!

...