从文本2转换决策树

2024-05-20 23:50:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个“文本”格式的决策树输出,很难阅读和解释。树/节点/叶后面有大量管道和压痕。我想知道是否有工具可以在那里,我可以在决策树饲料,如下面,并得到一个树图,如Weka,Python,…等等?你知道吗

由于我的决策树非常大,下面是示例/部分决策,给出了我的文本决策树的概念。非常感谢!你知道吗

"bio" <= 0.5:
|    "ml" <= 0.5:
|    |    "algorithm" <= 0.5:
|    |    |    "bioscience" <= 0.5:
|    |    |    |    "microbial" <= 0.5:
|    |    |    |    |    "assembly" <= 0.5:
|    |    |    |    |    |    "nano-tech" <= 0.5:
|    |    |    |    |    |    |    "smith" <= 0.5:
|    |    |    |    |    |    |    |    "neurons" <= 0.5:
|    |    |    |    |    |    |    |    |    "process" <= 1.5:
|    |    |    |    |    |    |    |    |    |    "program" <= 1.5:
|    |    |    |    |    |    |    |    |    |    |    "mammal" <= 1.0:
|    |    |    |    |    |    |    |    |    |    |    |    "lab" <= 0.5:
|    |    |    |    |    |    |    |    |    |    |    |    |    "human-machine" <= 1.5:
|    |    |    |    |    |    |    |    |    |    |    |    |    |    "tech" <= 0.5:
|    |    |    |    |    |    |    |    |    |    |    |    |    |    |    "smith" <= 0.5:

Tags: 工具文本决策树概念示例节点管道树图
1条回答
网友
1楼 · 发布于 2024-05-20 23:50:50

我不知道有什么工具可以解释这种格式,所以我认为您必须编写一些东西,要么解释文本格式,要么使用MALLET的Java API中的DecisionTree类检索树结构。你知道吗

用Python解释文本不应该太难:例如,如果

line = '|    |    |    |    |    "assembly" <= 0.5:'

然后您可以使用

parts = line.split('"')
indent = parts[0].count('|    ')
predictor = parts[1]
splitpoint = float(parts[2][-1-parts[2].rfind(' '):-1])

要创建图形输出,我将使用GraphViz。它有Python APIs,但是用基于文本的dot格式构建一个文件并用dot命令从中创建一个图形非常简单。例如,简单树的文件可能如下所示

digraph MyTree {
Node_1 [label="Predictor1"]
Node_1 -> Node_2 [label="< 0.335"]
Node_1 -> Node_3 [label=">= 0.335"]
Node_2 [label="Predictor2"]
Node_2 -> Node_4 [label="< 1.42"]
Node_2 -> Node_5 [label=">= 1.42"]
Node_3 [label="Class1
(p=0.897, n=26)", shape=box,style=filled,color=lightgray]
Node_4 [label="Class2
(p=0.993, n=17)", shape=box,style=filled,color=lightgray]
Node_5 [label="Class3
(p=0.762, n=33)", shape=box,style=filled,color=lightgray]
}

以及dot的结果输出

graphviz tree output

相关问题 更多 >