У меня есть дерево решений, которое создано в 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
С уважением, Ганеша