Построение дерева решений по методу ctree в карете, удалите ненужный гистограмм внизу - PullRequest
0 голосов
/ 16 ноября 2018

Я использую модель метода ctree и пытаюсь построить дерево решений, которое я получаю.Это основная часть моего кода.

fitControl <- trainControl(method = "cv", number = 10)
dtree <- train(
  Outcome ~ ., data = training_set, 
  method = "ctree", trControl = fitControl
)

Я пытаюсь построить дерево решений и использую

plot(dtree$finalModel)

, что дает мне это -

decision tree

Изображение здесь не очень хорошее, но в ответе на этот вопрос я получаю изображение, аналогичное первому графику - Дерево графиков с использованием функции rpart.plot

И функция as.simpleparty не работает, поскольку она не является объектом rpart.

Я хочу удалить расположенные внизу гистограммы и просто получить 1 или 0 на тех узлах, говорящих мне, как она классифицируется.Поскольку dtree $ finalModel является объектом двоичного дерева,

prp(dtree$finalModel)

не работает.

1 Ответ

0 голосов
/ 20 ноября 2018

Можно получить график ctree без графиков внизу, но с метками результатов без использования каретки. Для полноты я добавил код каретки ниже.

Сначала настройте некоторые данные для воспроизводимого примера:

library(caret)    
library(partykit)
data("PimaIndiansDiabetes", package = "mlbench")
head(PimaIndiansDiabetes)
      pregnant glucose pressure triceps insulin mass pedigree age diabetes
1        6     148       72      35       0 33.6    0.627  50      pos
2        1      85       66      29       0 26.6    0.351  31      neg
3        8     183       64       0       0 23.3    0.672  32      pos
4        1      89       66      23      94 28.1    0.167  21      neg
5        0     137       40      35     168 43.1    2.288  33      pos
6        5     116       74       0       0 25.6    0.201  30      neg

Теперь найдите оптимальные параметры ctree с помощью каретки:

fitControl <- trainControl(method = "cv", number = 10)
dtree <- train(
  diabetes ~ ., data = PimaIndiansDiabetes, 
  method = "ctree", trControl = fitControl
)

dtree
Conditional Inference Tree

768 samples
  8 predictor
  2 classes: 'neg', 'pos'

No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 691, 691, 691, 692, 691, 691, ...
Resampling results across tuning parameters:

  mincriterion  Accuracy   Kappa
  0.01          0.7239747  0.3783882
  0.50          0.7447027  0.4230003
  0.99          0.7525632  0.4198104

Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mincriterion = 0.99.

Это не идеальная модель, но эй хо, и мы идем.

Теперь создайте и построите модель ctree, используя пакет ctree с оптимальными параметрами из каретки:

ct <- ctree(diabetes ~ ., data = PimaIndiansDiabetes, mincriterion = 0.99)

png("diabetes.ctree.01.png", res=300, height=8, width=14, units="in")
plot(as.simpleparty(ct))
dev.off()

Что дает следующий рисунок без графиков внизу, но с конечными переменными ("pos" и "neg") на конечных узлах. Необходимо использовать нестандартные значения высоты и ширины, чтобы избежать наложения оконечных узлов.

Diabetes ctree diagram

Обратите внимание, следует соблюдать осторожность с 0, 1 переменными результата при использовании ctree с каретой. Пакет каретки с методом ctree по умолчанию строит регрессионную модель с целыми или числовыми данными 0, 1. Преобразуйте итоговую переменную в коэффициент, если требуется классификация.

...