web-dev-qa-db-ja.com

Weka分類ツリーの視覚化

オンラインで利用できるいくつかのデータセットを使用して、ツリーを視覚化しようとしています。ただし、ツリーオプションを視覚化することはできません。オンラインで入手可能なデータセットを使用してwekaで樹形図を取得する方法を教えてもらえますか?

14
Ramakrishna

ここを見てください http://maya.cs.depaul.edu/classes/ect584/weka/classify.html たとえば。

まず、通常の方法で、決定木(irisデータセットでJ48分類子を使用)を適合させる必要があります。結果リストパネル(Weka Explorerの左下)で、対応する出力を右クリックし、以下に示すように[ツリーの視覚化]を選択します。

enter image description here

enter image description here

Prefuseプラグイン をインストールしている場合は、ツリーをよりきれいなレイアウトで視覚化することもできます。

18
chl

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();
   }

}

ツリーを示すポップアップウィンドウが表示されます。

10
London guy

パッケージマネージャーを含むWeka 3.7を使用すると、これを行うことができます:

http://weka.wikispaces.com/Unofficial+packages+for+WEKA+3.7 に移動し、パッケージに関するテキストを読んで、に移動します。

視覚化

graphviz-treevisualize-GraphViz実行可能ファイルを使用して、ツリー(J48など)からエクスプローラーでニースグラフを生成します。

このURLをクリップボードにコピーします。

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

(これはweka開発者の1人からのgithubリポジトリだと思います。リンクは将来少し変更される可能性があります)

パッケージマネージャーを開き、[ファイル/ 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では、これを実装するコードはpackages /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
3
knb

適切な視覚化プラグインをインストールしていないため、「視覚化ツリー」オプションは無効にできます。一部のツリーベースの分類アルゴリズム(R48やRandomTreeなど)は「プリフューズ視覚化ツールキット」を使用するため、ツリーを視覚化するにはprefuseTreeプラグインをインストールする必要があります。

パッケージマネージャーが組み込まれているWeka3.7。*を使用すると、プラグインを簡単にインストールできます。

1
SuB

WEKAのコマンドライン(Simple CLI)を使用している場合は、パラメーター-gを使用してグラフ情報を出力してから使用できます。 GraphVizのそれ。

アイリスデータセットで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

0
c-chavez