泰坦尼克号示例 R 与 Python:相反的决策树

Titanic example R vs. Python: decision tree the other way around

我有一个使用 titanic 示例在 R 中创建的决策树。这棵树是经过验证和正确的。 (decision tree 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 即 'age'。如果您是女性,则必须转到方框 2,即 'Third class'。然而,这在 Python 中显示为相反的方式。所以:男性进入第三 class,女性进入年龄。 这会影响最终结果,因为 R 显示女性存活,Python 显示男性存活。

有人知道这里出了什么问题吗?

可以在 OneDrive 上找到带有支持数据集的完整代码: https://1drv.ms/u/s!AjkQWQ6EO_fMiSVkhk9yIqsdlA-4

问候,Ganesh

我认为您误读了这篇文章,而且这些树实际上非常相似。

如果你是女性,那么(male <= 0.5) = True,所以你去左边的方框,'Third Class'。如果你是男性,那么(male <= 0.5) = False,所以你去右边的方框,'Age'.