25
Eclipse で Weka で API でででで

Eclipse で Weka の API を呼び出す

  • Upload
    makala

  • View
    197

  • Download
    0

Embed Size (px)

DESCRIPTION

Eclipse で Weka の API を呼び出す. Eclipse で Weka の API を呼び出す. Weka ではライブラリーが公開されていて、自分 で作ったプログラムから Weka の API ( Weka の製作者が用意したクラスやメソッド等)を呼び出すことができます さっそく Eclipse を起動しましょう. Eclipse で Weka の API を呼び出す. 適当な名前で Java プロジェクトを作ります   画像は WekaProject にしています. Eclipse で Weka の API を呼び出す. プロジェクトフォルダを右クリックし、 - PowerPoint PPT Presentation

Citation preview

Page 1: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す

Page 2: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• Wekaではライブラリーが公開されていて、自分で作ったプログラムからWekaの

API(Wekaの製作者が用意したクラスやメソッド等)を呼び出すことができます

• さっそく Eclipseを起動しましょう

Page 3: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• 適当な名前で Javaプロジェクトを作ります  画像はWekaProjectにしています

Page 4: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す

プロジェクトフォルダを右クリックし、ビルド・パス→ビルドパスの構成と開いていきます

Page 5: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• 図のような画面が出るので、外部 jarの追加をクリックします

Page 6: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• Wekaをインストールしたところにある

weka.jarを選択して開きます

Page 7: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• ライブラリーの欄に weka.jarが表示されていれば成功です。 OKを押して閉じます

Page 8: Eclipse で Weka の API を呼び出す

EclipseでWekaの APIを呼び出す• プロジェクトの欄からも weka.jarが追加されていることがわかります

※weka.jarの場所を変更した場合は追加し直す必要があります

Page 9: Eclipse で Weka の API を呼び出す

サンプルコードの実行• 参考資料から J48Test.javaをダウンロードして実行してみましょう※作成した ball.arffをコピーしてプロジェクト直下に置くこと

Page 10: Eclipse で Weka の API を呼び出す

実行結果

Ball.csvの解析結果が出力されました

Page 11: Eclipse で Weka の API を呼び出す

プログラムの流れデータの読み込み・クラスの設定

↓(フィルターの設定)↓アルゴルズムの設定↓結果の評価

Page 12: Eclipse で Weka の API を呼び出す

データの読み込みデータを読み込みます。Instancesは扱うデータの集合の情報をもつクラスです読み込んだ後にインデックス(何を出力するか)を設定しますDataSource source = new DataSource(“ball.arff");Instances data = source.getDataSet();

data.setClassIndex(data.numAttributes() - 1);

Page 13: Eclipse で Weka の API を呼び出す

フィルターの設定データの属性を減らしたり、値を補正する場合はフィルターの設定をします。今回の例では設定をしていません

Page 14: Eclipse で Weka の API を呼び出す

アルゴリズムの設定• フィルターの設定ができたら、アルゴリズムの指定をしてデータマイニングを行います• アルゴリズム毎にクラスが用意されていますJ48 j48 = new J48();j48.buildClassifier(data);

Page 15: Eclipse で Weka の API を呼び出す

結果の評価• マイニングの具体的な評価を見たい時は

Evaluationクラスを呼び出して出力しますEvaluation eval = new Evaluation(data);eval.evaluateModel(j48, data);System.out.println(eval.toSummaryString());System.out.println(eval.toClassDetailsString());System.out.println(eval.toMatrixString());

Page 16: Eclipse で Weka の API を呼び出す

木の図示• 木のビジュアライズをする TreeVisualizerクラスを使うことで木の図示も可能です

Page 17: Eclipse で Weka の API を呼び出す

木の図示図示する木の情報やノードの設定をしてフレームに載せますTreeVisualizer tv = new TreeVisualizer(null, j48.graph(),new PlaceNode2());jf.getContentPane().add(tv, BorderLayout.CENTER);jf.setVisible(true); tv.fitToScreen();

Page 18: Eclipse で Weka の API を呼び出す

決定木からルールを取り出す• 生成した木からルールを抽出し、新しく得られたボールのデータを評価してみましょう

Page 19: Eclipse で Weka の API を呼び出す

J48クラスの toSourceメソッドを使う• J48クラスには、 Javaコード形式の IF-

THEN形式のルールを出力する toSourceメソッドがあります

String source =j48.toSource(クラス名 );

Page 20: Eclipse で Weka の API を呼び出す

ルールを出力するコード// 生成する javaファイル名String className = "BounceBallRule";// javaコードの生成String cl = j48.toSource(className);// ファイルの生成 (同じフォルダに出力 )PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(new File("src/" + className + ".java"))));// ファイルにルールを書き込むpw.println(cl);// ファイルを閉じるpw.close();

Page 21: Eclipse で Weka の API を呼び出す

実行結果• プログラムを実行するとソースフォルダに

BounceBallRule.javaというのが作成されています

Page 22: Eclipse で Weka の API を呼び出す

実行結果• Eclipse上でも確認できます。

表示されていない場合は、パッケージを右クリックしてリフレッシュを押す

Page 23: Eclipse で Weka の API を呼び出す

生成されたクラスclass BounceBallRule {

public static double classify(Object[] i) throws Exception {

double p = Double.NaN; p = BounceBallRule.N1100d7a0(i); return p; } static double N1100d7a0(Object []i) { double p = Double.NaN; if (i[3] == null) { p = 0; } else if (i[3].equals("Yes")) { p = 0; } else if (i[3].equals("No")) { p = 1; } return p; }}

革製かどうかによる分類

Page 24: Eclipse で Weka の API を呼び出す

ルールクラスの使い方• 新しいデータの値を引数にして、 classifyメソッドを呼び出します

図は、 Size:Small, Color:Blue, Weight:Light, Rubber?:No というボールの情報を設定

Page 25: Eclipse で Weka の API を呼び出す

新しいデータの評価• さっそく新しいデータを評価してみましょう

このボールは弾まないという結果が得られた