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?