【问题标题】:Titanic example R vs. Python: decision tree the other way around泰坦尼克号示例 R 与 Python:相反的决策树
【发布时间】:2018-10-24 04:32:43
【问题描述】:

我有一个使用 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,即“年龄”。如果您是女性,您必须前往方框 2,即“三等舱”。但是,这在 Python 中以相反的方式显示。所以:男性进入三等舱,女性进入年龄。 这会影响最终结果,因为 R 显示雌性存活,而 Python 显示雄性存活。

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

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

问候,甘尼什

【问题讨论】:

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


    【解决方案1】:

    我认为你错误地阅读了这个错误的方式,树木实际上非常相似。

    如果您是女性,则 (male

    【讨论】:

    • 哦,你是对的!对不起。有没有办法用 True(是)和 False(否)显示“男性”?那么我可以将男性 0.5 吗?
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 2016-06-19
    • 2022-01-03
    • 2020-10-25
    • 2019-03-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多