【发布时间】: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