Титаник пример R против Python: дерево решений наоборот - PullRequest
0 голосов
/ 14 мая 2018

У меня есть дерево решений, которое создано в R с использованием титанического примера. Это дерево проверено и корректно. ( дерево решений R )

Теперь я создаю то же дерево в Python, используя тот же набор данных и столбцы для создания дерева. Я делаю это с помощью Graphviz, но поскольку я не могу импортировать его в сам Python (Spyder), я просто экспортирую данные в Graphviz, а затем создаю график на их веб-сайте http://webgraphviz.com/

Код, который я использую для экспорта:

import sklearn.tree as tree 

tree.export_graphviz(rpart, out_file="tree.dot", filled=True, 
                     feature_names=list(titanic_dmy.drop(['survived'], axis=1).columns), 
                             impurity=False, label=None, proportion=True, 
                             class_names=['Survived', 'Died'])

Созданное дерево выглядит как this

Числа не соответствуют 100%, но они очень близки. Проблема здесь в том, что дерево, созданное Python, является полной противоположностью того, что создал R.

Например: R показывает, что если вы мужчина, вы должны перейти к блоку 2, который называется «возраст». Если вы женщина, вы должны перейти к блоку 2, который называется «Третий класс». Тем не менее, это показано с другой стороны в Python. Итак: мужчина идет в третий класс, а женщина - в возраст. Это влияет на конечный результат, поскольку R показывает, что самка выживает, а Python показывает, что самец выживает.

Кто-нибудь знает, что здесь пошло не так?

Полный код с наборами вспомогательных данных можно найти на OneDrive: https://1drv.ms/u/s!AjkQWQ6EO_fMiSVkhk9yIqsdlA-4

С уважением, Ганеша

1 Ответ

0 голосов
/ 14 мая 2018

Я думаю, что вы ошибочно читаете это неправильно, и деревья на самом деле очень похожи.

Если вы женщина, то (мужчина <= 0,5) = True, поэтому вы идете в поле слева, «Третий класс». Если вы мужчина, то (мужчина <= 0,5) = Ложь, поэтому вы идете в поле справа, «Возраст». </p>

...