eclipse で weka の api を呼び出す
DESCRIPTION
Eclipse で Weka の API を呼び出す. Eclipse で Weka の API を呼び出す. Weka ではライブラリーが公開されていて、自分 で作ったプログラムから Weka の API ( Weka の製作者が用意したクラスやメソッド等)を呼び出すことができます さっそく Eclipse を起動しましょう. Eclipse で Weka の API を呼び出す. 適当な名前で Java プロジェクトを作ります 画像は WekaProject にしています. Eclipse で Weka の API を呼び出す. プロジェクトフォルダを右クリックし、 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/1.jpg)
EclipseでWekaの APIを呼び出す
![Page 2: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/2.jpg)
EclipseでWekaの APIを呼び出す• Wekaではライブラリーが公開されていて、自分で作ったプログラムからWekaの
API(Wekaの製作者が用意したクラスやメソッド等)を呼び出すことができます
• さっそく Eclipseを起動しましょう
![Page 3: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/3.jpg)
EclipseでWekaの APIを呼び出す• 適当な名前で Javaプロジェクトを作ります 画像はWekaProjectにしています
![Page 4: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/4.jpg)
EclipseでWekaの APIを呼び出す
プロジェクトフォルダを右クリックし、ビルド・パス→ビルドパスの構成と開いていきます
![Page 5: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/5.jpg)
EclipseでWekaの APIを呼び出す• 図のような画面が出るので、外部 jarの追加をクリックします
![Page 6: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/6.jpg)
EclipseでWekaの APIを呼び出す• Wekaをインストールしたところにある
weka.jarを選択して開きます
![Page 7: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/7.jpg)
EclipseでWekaの APIを呼び出す• ライブラリーの欄に weka.jarが表示されていれば成功です。 OKを押して閉じます
![Page 8: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/8.jpg)
EclipseでWekaの APIを呼び出す• プロジェクトの欄からも weka.jarが追加されていることがわかります
※weka.jarの場所を変更した場合は追加し直す必要があります
![Page 9: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/9.jpg)
サンプルコードの実行• 参考資料から J48Test.javaをダウンロードして実行してみましょう※作成した ball.arffをコピーしてプロジェクト直下に置くこと
![Page 10: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/10.jpg)
実行結果
Ball.csvの解析結果が出力されました
![Page 11: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/11.jpg)
プログラムの流れデータの読み込み・クラスの設定
↓(フィルターの設定)↓アルゴルズムの設定↓結果の評価
![Page 12: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/12.jpg)
データの読み込みデータを読み込みます。Instancesは扱うデータの集合の情報をもつクラスです読み込んだ後にインデックス(何を出力するか)を設定しますDataSource source = new DataSource(“ball.arff");Instances data = source.getDataSet();
data.setClassIndex(data.numAttributes() - 1);
![Page 13: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/13.jpg)
フィルターの設定データの属性を減らしたり、値を補正する場合はフィルターの設定をします。今回の例では設定をしていません
![Page 14: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/14.jpg)
アルゴリズムの設定• フィルターの設定ができたら、アルゴリズムの指定をしてデータマイニングを行います• アルゴリズム毎にクラスが用意されていますJ48 j48 = new J48();j48.buildClassifier(data);
![Page 15: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/15.jpg)
結果の評価• マイニングの具体的な評価を見たい時は
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 を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/16.jpg)
木の図示• 木のビジュアライズをする TreeVisualizerクラスを使うことで木の図示も可能です
![Page 17: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/17.jpg)
木の図示図示する木の情報やノードの設定をしてフレームに載せます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 を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/18.jpg)
決定木からルールを取り出す• 生成した木からルールを抽出し、新しく得られたボールのデータを評価してみましょう
![Page 19: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/19.jpg)
J48クラスの toSourceメソッドを使う• J48クラスには、 Javaコード形式の IF-
THEN形式のルールを出力する toSourceメソッドがあります
String source =j48.toSource(クラス名 );
![Page 20: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/20.jpg)
ルールを出力するコード// 生成する 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 を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/21.jpg)
実行結果• プログラムを実行するとソースフォルダに
BounceBallRule.javaというのが作成されています
![Page 22: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/22.jpg)
実行結果• Eclipse上でも確認できます。
表示されていない場合は、パッケージを右クリックしてリフレッシュを押す
![Page 23: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/23.jpg)
生成されたクラス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 を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/24.jpg)
ルールクラスの使い方• 新しいデータの値を引数にして、 classifyメソッドを呼び出します
図は、 Size:Small, Color:Blue, Weight:Light, Rubber?:No というボールの情報を設定
![Page 25: Eclipse で Weka の API を呼び出す](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816401550346895dd5a0c4/html5/thumbnails/25.jpg)
新しいデータの評価• さっそく新しいデータを評価してみましょう
このボールは弾まないという結果が得られた