mathematica中的分类树实现
我想用Mathematica实现简单的分类树(二进制分类)。
我如何在Mathematica中实现二叉树? 有没有这样的标志?
我想说这取决于你想要对数据结构做什么。
你可以利用Mathematica表达式本身就是树的事实。
如果只有叶节点相关,则使用嵌套列表,例如{{1, {2, 3}}, 4}
。 如果其他节点也需要携带一些数据,那么你可以使用这样的东西:
tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]]
看到像这样的结构:
{{1, {2, 3}}, 4} // TreeForm
tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]] // TreeForm
接下来的问题是如何在这样的数据结构上实现算法X.
MMA 8中的新对象包括TreeGraph,CompleteKaryTree和KaryTree。 后两个对象默认提供二叉树。 我不知道它们对密集计算的效率如何,但它们似乎非常适合显示分类。 有许多操作和显示它们的谓词和选项。
以下是来自[Breiman,L. Classification and Regression Trees:Chapman&Hall / CRC,1984]的分类树的例子。 它涉及3个问题,以确定如果不治疗,心脏病患者是否有可能在30天内死亡。
KaryTree[9, 2,
VertexLabels -> {1 -> "Blood pressure > 91 ?", 2 -> "Age > 62.5?",
4 -> "Sinus tachycardia ?", 8 -> "< 30 days"},
EdgeLabels -> {1 [UndirectedEdge] 2 -> "yes",
1 [UndirectedEdge] 3 -> "no", 2 [UndirectedEdge] 4 -> "yes",
2 [UndirectedEdge] 5 -> "no", 4 [UndirectedEdge] 8 -> "yes",
4 [UndirectedEdge] 9 -> "no"}, ImagePadding -> 20]
我想摆脱右边的两个未使用的节点,但还没有找到一个优雅的方式来做到这一点。 所以我想我会在SO上发布一个简单的问题。
就我个人而言,我不太清楚,但似乎有一篇关于Wolfram网站上的主题的文章,在这里找到。 它可能不会回答你的问题,但它会希望给你一些见解!
链接地址: http://www.djcxy.com/p/35577.html上一篇: classification tree implementation in mathematica
下一篇: What is the simplest way to plot a decomposition tree in Mathematica?