Мне не известен ни один инструмент для интерпретации этого формата, поэтому я думаю, что вам придется что-то написать, либо для интерпретации текстового формата, либо для получения древовидной структуры с использованием класса DecisionTree
в MALLET Java API .
Интерпретация текста в 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