ctree()
функция ожидает, что (а) соответствующие классы (числовой, фактор и т.д.) используются для каждой переменной, и что (б) только полезные предикторы используются в модельная формула.
Что касается (b), то вы поставили переменные, которые на самом деле являются просто символами (например, Name
), а не факторами. Это необходимо либо предварительно обработать соответствующим образом, либо исключить из анализа.
Даже если вы этого не сделаете, вы не получите лучших результатов, потому что некоторые переменные (например, Survived
и Pclass
) кодируются численно, но действительно являются категориальными переменными, которые должны быть факторами. Если вы посмотрите на сценарии от https://www.kaggle.com/c/titanic/forums/t/13390/introducing-kaggle-scripts, вы также увидите, как можно выполнить подготовку данных. Здесь, я использую
titanic <- read.csv("train.csv")
titanic$Survived <- factor(titanic$Survived,
levels = 0:1, labels = c("no", "yes"))
titanic$Pclass <- factor(titanic$Pclass)
titanic$Name <- as.character(titanic$Name)
Как для (б), я затем перейти к ctree()
называть только с переменными, которые были достаточно предварительно обработанным для содержательного анализа. (И я использую новую рекомендованную реализацию из пакета partykit
.)
library("partykit")
ct <- ctree(Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,
data = titanic)
plot(ct)
print(ct)
Это дает следующие графический вывод:
А следующий вывод на печать:
Model formula:
Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked
Fitted party:
[1] root
| [2] Sex in female
| | [3] Pclass in 1, 2: yes (n = 170, err = 5.3%)
| | [4] Pclass in 3
| | | [5] Fare <= 23.25: yes (n = 117, err = 41.0%)
| | | [6] Fare > 23.25: no (n = 27, err = 11.1%)
| [7] Sex in male
| | [8] Pclass in 1
| | | [9] Age <= 52: no (n = 88, err = 43.2%)
| | | [10] Age > 52: no (n = 34, err = 20.6%)
| | [11] Pclass in 2, 3
| | | [12] Age <= 9
| | | | [13] Pclass in 3: no (n = 71, err = 18.3%)
| | | | [14] Pclass in 2: yes (n = 13, err = 30.8%)
| | | [15] Age > 9: no (n = 371, err = 11.3%)
Number of inner nodes: 7
Number of terminal nodes: 8
Спасибо за ваше время и ваши объяснения. Он работает сейчас! – 2xP