Управление разбиением (больше или равно, меньше) в деревьях решений в R (пакет rpart) - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю с деревьями решений в R для исследовательского проекта.Я хотел бы иметь последовательную запись в решениях / разделениях, то есть мне бы хотелось, чтобы мои решения всегда имели форму «x = b».

Рассмотрим эти примеры из набора данных Ирис и Титаник

library(rpart)
library(dplyr)

#iris
tree_iris <- rpart(Species ~ ., data = iris, method = 'class')

#titanic
set.seed(678)
path <-'https://raw.githubusercontent.com/thomaspernet/data_csv_r/master/data/titanic_csv.csv'
titanic <-read.csv(path)
titanic <- select(titanic, -c(home.dest, cabin, name, X, ticket, embarked))
tree_titanic <- rpart(survived ~ ., data = titanic, method = 'class', cp = 0.02)

Результат дерева Ирис:

1) root 150 100 setosa (0.33333333 0.33333333 0.33333333)  
  2) Petal.Length< 2.45 50   0 setosa (1.00000000 0.00000000 0.00000000) *
  3) Petal.Length>=2.45 100  50 versicolor (0.00000000 0.50000000 0.50000000)  
    6) Petal.Width< 1.75 54   5 versicolor (0.00000000 0.90740741 0.09259259) *
    7) Petal.Width>=1.75 46   1 virginica (0.00000000 0.02173913 0.97826087) *

, а результат дерева Титаник::

 1) root 1309 500 0 (0.61802903 0.38197097)  
   2) sex=male 843 161 0 (0.80901542 0.19098458)  
     4) age>=9.5 796 136 0 (0.82914573 0.17085427) *
     5) age< 9.5 47  22 1 (0.46808511 0.53191489)  
      10) sibsp>=2.5 20   1 0 (0.95000000 0.05000000) *
      11) sibsp< 2.5 27   3 1 (0.11111111 0.88888889) *
   3) sex=female 466 127 1 (0.27253219 0.72746781)  
     6) pclass>=2.5 216 106 0 (0.50925926 0.49074074)  
      12) fare>=23.35 33   3 0 (0.90909091 0.09090909) *
      13) fare< 23.35 183  80 1 (0.43715847 0.56284153) *
     7) pclass< 2.5 250  17 1 (0.06800000 0.93200000) *

Как видите, для первого примера решения имеют форму 'x = b', и левый дочерний узел указывает, что это утверждение верно.Могу ли я контролировать это так, чтобы решения всегда имели форму «x

...