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

时间:2018-05-14 13:31:08

标签: python-3.x scikit-learn graphviz decision-tree

我有一个决策树,使用泰坦尼克的例子在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个“年龄”的方框。如果你是女性,你必须去第二类“第三类”。但是,这在Python中反过来表现出来了。所以:男性进入三等,女性进入年龄。 这会影响最终结果,因为R表明女性幸存下来,Python表明男性幸存下来。

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

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

问候,Ganesh

1 个答案:

答案 0 :(得分:0)

我认为你错误地读了这个错误的方法并且树实际上非常相似。

如果你是女性,那么(男性<= 0.5)=真,所以你去左边的方框,“第三课”。如果你是男性,那么(男性<= 0.5)=假,所以你去右边的方框,'年龄'。