泰坦尼克号示例 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'.
我有一个使用 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'.