EclipseでWekaのAPIを呼び出す

Slides:



Advertisements
Similar presentations
基盤地図情報を使う 2011 年 6 月 29 日 地域科学演習 担当:橋本 雄一.  「マイドキュメント」など任意の場所に「 GIS 」というフォルダを作る.  国土地理院の基盤地図情報ダウンロードサービスサイト ( )を開き,「ダウンロードファイル形式選.
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
クリックすると、 [SourceEditor2.0] の インストール / 更新・起動 クリックすると、 [MarkReader2.0] の インストール / 更新・起動 クリックすると、 [MarkReader2.0] の インストール / 更新・起動 SQS ホームページ
第5章 JMPのインストールと基本操作 廣野元久
大杉 直樹†, 神谷 年洋‡, 門田 暁人†, 松本 健一† †奈良先端科学技術大学院大学 情報工学科 {naoki-o, akito-m,
静岡大学大学院理工学研究科 阿部 秀尚 Weka入門(セットアップ編) 静岡大学大学院理工学研究科 阿部 秀尚
1 インストール・起動する 「SQS」で検索 SQSホームページ 動作環境 JavaSE 6以上 (JRE6)
ファイルやフォルダを検索する ①「スタート」→「検索」→「ファイルとフォルダ」とクリックする。
Applet 岡部 祐典 鈴木 敬幸.
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
~手続き指向からオブジェクト指向へ(Ⅰ)~
アルゴリズムとデータ構造 2010年7月5日
talend活用事例 ・ナビゲータグラフのカスタマイズにおける事例 ・CSVダウンロードでのカスタマイズ事例
WebサービスII (第10回) 2007年11月28日 植田龍男.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Servlet J2EE I 第8回 /
Iアプリプログラミング その1  鳥居秀徳.
JavaServlet&JSP入門 01K0018 中村太一.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
アルゴリズムとデータ構造 2012年6月14日
JavaBeans とJSP データベース論 第5回.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
アルゴリズムとデータ構造 2011年6月14日
情報学部 プログラミング体験教室 (初級編)
RMI ソフトウェア特論 第6回 /
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
プログラミング演習3 第2回 GUIの復習.
Titanium Studioを使った アプリ開発 Vol.1
~手続き指向からオブジェクト指向へ[Ⅱ]~
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
サブゼミ第9回 実装編③ 永続化とjava.ioパッケージ.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
暗号技術 ~JAVAプログラム③~ (7週目)
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2006年7月4日
ポインタ解析におけるライブラリの スタブコードへの置換の効果
Javaによる Webアプリケーション入門 第6回
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Jakarta Struts (2) ソフトウェア特論 第11回.
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
フリーソフトでDVDのコピーをしてみよう
WinSCPのインストール方法
プロジェクトの エクスポートとインポート 2014/10/7.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
2013年度 プログラミングⅡ ~ はじめてのプログラミング ~.
ソフトウェア制作論 平成30年11月21日.
パッケージ,アクセス修飾子 2008年4月27日 海谷 治彦.
オブジェクト指向プログラミングと開発環境
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
2014年度 プログラミングⅡ ~ はじめてのプログラミング ~.
統計ソフトウエアRの基礎.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
Javaによる Webアプリケーション入門 第4回
dcNavi:デバッグ支援のための グラフベース推薦システム
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
アルゴリズムとデータ構造1 2009年7月2日
JAVA入門⑥ クラスとインスタンス.
基礎プログラミング Eclipse のインストール
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

EclipseでWekaのAPIを呼び出す

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

生成されたクラス 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; 革製かどうかによる分類

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

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