我有一个决策树,使用泰坦尼克的例子在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
答案 0 :(得分:0)
我认为你错误地读了这个错误的方法并且树实际上非常相似。
如果你是女性,那么(男性<= 0.5)=真,所以你去左边的方框,“第三课”。如果你是男性,那么(男性<= 0.5)=假,所以你去右边的方框,'年龄'。