Presentation is loading. Please wait.

Presentation is loading. Please wait.

EclipseでWekaのAPIを呼び出す

Similar presentations


Presentation on theme: "EclipseでWekaのAPIを呼び出す"— Presentation transcript:

1 EclipseでWekaのAPIを呼び出す

2 EclipseでWekaのAPIを呼び出す
Wekaではライブラリーが公開されていて、自分で作ったプログラムからWekaのAPI(Wekaの製作者が用意したクラスやメソッド等)を呼び出すことができます さっそくEclipseを起動しましょう

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

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

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

6 EclipseでWekaのAPIを呼び出す
Wekaをインストールしたところにあるweka.jarを選択して開きます

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

8 EclipseでWekaのAPIを呼び出す
プロジェクトの欄からもweka.jarが追加されていることがわかります ※weka.jarの場所を変更した場合は追加し直す必要があります

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

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

11 データの読み込み・クラスの設定 ↓ (フィルターの設定) アルゴルズムの設定 結果の評価
プログラムの流れ データの読み込み・クラスの設定 ↓ (フィルターの設定) アルゴルズムの設定 結果の評価

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

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

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

15 結果の評価 マイニングの具体的な評価を見たい時は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());

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

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

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

19 J48クラスのtoSourceメソッドを使う
J48クラスには、Javaコード形式のIF-THEN形式のルールを出力するtoSourceメソッドがあります String source =j48.toSource(クラス名);

20 ルールを出力するコード // 生成する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();

21 実行結果 プログラムを実行するとソースフォルダにBounceBallRule.javaというのが作成されています

22 実行結果 Eclipse上でも確認できます。 表示されていない場合は、パッケージを右クリックしてリフレッシュを押す

23 生成されたクラス 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) { if (i[3] == null) { p = 0; } else if (i[3].equals("Yes")) { } else if (i[3].equals("No")) { p = 1; 革製かどうかによる分類

24 ルールクラスの使い方 新しいデータの値を引数にして、classifyメソッドを呼び出します
図は、Size:Small, Color:Blue, Weight:Light, Rubber?:No というボールの情報を設定

25 このボールは弾まないという結果が得られた
新しいデータの評価 さっそく新しいデータを評価してみましょう このボールは弾まないという結果が得られた


Download ppt "EclipseでWekaのAPIを呼び出す"

Similar presentations


Ads by Google