Визуализация дерева классификации Weka - PullRequest
14 голосов
/ 18 мая 2011

Я использую несколько наборов данных, доступных онлайн, и пытаюсь визуализировать дерево.Тем не менее, это не позволяет мне визуализировать опции дерева вообще.Может кто-нибудь подсказать мне, как получить древовидную диаграмму в weka, используя наборы данных, доступные онлайн?

Ответы [ 5 ]

18 голосов
/ 18 мая 2011

Смотрите здесь http://maya.cs.depaul.edu/classes/ect584/weka/classify.html, например.

Сначала вы должны уместить свое дерево решений (я использовал классификатор J48 для набора данных iris) обычным способом. На панели списка результатов (слева внизу в Weka Explorer) щелкните правой кнопкой мыши соответствующий вывод и выберите «Визуализировать дерево», как показано ниже.

enter image description here

enter image description here

Если вы установили плагин Prefuse , вы даже можете визуализировать свое дерево в более симпатичном макете.

10 голосов
/ 20 июля 2012

Если вы хотите сделать это с помощью Java-программы, напишите следующую программу:

import java.awt.BorderLayout;
import java.io.BufferedReader;
import java.io.FileReader;

import weka.classifiers.*;
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.gui.treevisualizer.PlaceNode2;
import weka.gui.treevisualizer.TreeVisualizer;

public class WekaJ48 {
public static void main(String args[]) throws Exception {
     // train classifier
     J48 cls = new J48();
     Instances data = new Instances(new BufferedReader(new File    
Reader("D:\\sample.arff")));
     data.setClassIndex(data.numAttributes() - 1);
     cls.buildClassifier(data);

     // display classifier
     final javax.swing.JFrame jf = 
       new javax.swing.JFrame("Weka Classifier Tree Visualizer: J48");
     jf.setSize(500,400);
     jf.getContentPane().setLayout(new BorderLayout());
     TreeVisualizer tv = new TreeVisualizer(null,
         cls.graph(),
         new PlaceNode2());
     jf.getContentPane().add(tv, BorderLayout.CENTER);
     jf.addWindowListener(new java.awt.event.WindowAdapter() {
       public void windowClosing(java.awt.event.WindowEvent e) {
         jf.dispose();
       }
     });

     jf.setVisible(true);
     tv.fitToScreen();
   }

}

Появится всплывающее окно с деревом.

3 голосов
/ 15 апреля 2015

С Weka 3.7 , который включает в себя менеджер пакетов , вы можете сделать это:

Перейдите на http://weka.wikispaces.com/Unofficial+packages+for+WEKA+3.7 и прочитайте текст о пакетах и ​​перейдите на

Визуализация

graphviz-treevisualize - Создание хороших графиков в Проводнике из деревья (например, J48) с использованием исполняемых файлов GraphViz.

Скопируйте этот URL в буфер обмена:

https://github.com/fracpete/graphviz-treevisualize-weka-package/releases/download/v2014.8.1/graphviz-treevisualize-2014.8.1.zip

(Я думаю, что это репозиторий github от одного из разработчиков weka. В будущем ссылка может немного измениться)

Откройте диспетчер пакетов, нажмите кнопку «Файл / URL», введите этот URL из буфера обмена, установите пакет.

Теперь запустите классификатор. Щелкните правой кнопкой мыши в списке результатов (см. Рисунок)

enter image description here Затем вы можете визуализировать дерево решений в виде красивой растровой графики и экспортировать его в файл .bmp, .png, .eps с помощью диалога «Сохранить как». (Файл .eps будет содержать встроенный растровый объект):

enter image description here

Если вам нужен вывод векторной графики , запустите классификацию из командной строки и экспортируйте в формат файла .dot.

java -Xmx1024M -cp /usr/local/lib/R/site-library/RWekajars/java//weka.jar weka.classifiers.trees.J48 -t breast-cancer.arff -C 0.25 -M 2 -g > breast-cancer.arff.dot

Затем перейдите в формат SVG:

dot -o breast-cancer.arff.dot.svg breast-cancer.arff.dot -Tsvg

В Java код, который реализует это, находится в пакетах / graphviz-treevisualize-2014.8.1.jar

 weka/gui/visualize/plugins/GraphVizPanel.class
 weka/gui/visualize/plugins/GraphVizTreeVisualization.class
 weka/gui/visualize/plugins/GraphVizTreeVisualization.props
 weka/gui/visualize/plugins/GraphVizTreeVisualizationPlugin$1$1.class
 weka/gui/visualize/plugins/GraphVizTreeVisualizationPlugin$1$2.class
 weka/gui/visualize/plugins/GraphVizTreeVisualizationPlugin$1.class
 weka/gui/visualize/plugins/GraphVizTreeVisualizationPlugin.class
1 голос
/ 01 января 2015

Параметр «Визуализированное дерево» является деликатным, поскольку вы не установили соответствующий плагин визуализации. Некоторые алгоритмы классификации на основе дерева (например, R48 и RandomTree) используют «набор инструментов для визуализации перед слиянием», поэтому для визуализации дерева необходимо установить плагин prefuseTree.

Используйте Weka 3.7. * Со встроенным диспетчером пакетов для простой установки плагина.

0 голосов
/ 01 декабря 2016

Если вы используете командную строку WEKA ( Simple CLI ), вы можете вывести графическую информацию с параметром -g , а затем использовать ее в GraphViz .

Ex работает с J48 на наборе данных радужной оболочки:

`java weka.classifiers.trees.J48 -C 0.25 -M 2 -t "C:\datasets\iris.arff" -g`

выходы:

digraph J48Tree {
N0 [label="petalwidth" ]
N0->N1 [label="<= 0.6"]
N1 [label="Iris-setosa (50.0)" shape=box style=filled ]
N0->N2 [label="> 0.6"]
N2 [label="petalwidth" ]
N2->N3 [label="<= 1.7"]
N3 [label="petallength" ]
N3->N4 [label="<= 4.9"]
N4 [label="Iris-versicolor (48.0/1.0)" shape=box style=filled ]
N3->N5 [label="> 4.9"]
N5 [label="petalwidth" ]
N5->N6 [label="<= 1.5"]
N6 [label="Iris-virginica (3.0)" shape=box style=filled ]
N5->N7 [label="> 1.5"]
N7 [label="Iris-versicolor (3.0/1.0)" shape=box style=filled ]
N2->N8 [label="> 1.7"]
N8 [label="Iris-virginica (46.0/1.0)" shape=box style=filled ]
}

и в GraphViz:

GraphViz

...