SlideShare a Scribd company logo
1 of 13
Wekaによる 
機械学習アルゴリズム 
の実行 
その1:PHPスクリプトによるCLIからの 
機械アルゴリズムの実行 
2014年11月27日 
文教大学情報学部情報システム学科阿部秀尚 
(hidenao@shonan.bunkyo.ac.jp)
システムの構成(概観) 
センサーに 
よる電子化 
... 
様々な形態の入力 
対象システム 
識別器構築 
処理 
アクチュ 
エータ 
特徴量抽出 
処理 
様々なタスクの実現(出力)
入力データと特徴量抽出 
• 表形式データ 
構造化データ 
◦ →離散値,数値を加工処理 
とも呼ぶ 
• 時系列データ(株価や心電図など) 
◦ →時点毎の値,波形特徴量,分類 
• 音声データ 
◦ →時点毎の値,波形特徴量 
• テキストデータ 
◦ →特徴語の有無や重要度(bag-of-words) 
• 画像データ 
◦ →画素ごとの値,局所特徴量(bag-of-visual-words) 
特徴量抽出 
処理を行って 
作成 
非構造化データ 
とも呼ぶ
Wekaを利用した知能システム構築 
~Wekaとは~ 
• Weka(ウェカ)は,ワイカト大学(ニュージーランド)の機 
械学習グループを中心に作成されたデータマイニングツール 
• Javaで実装されたオープンソースソフトウェア 
• 各種インタフェースからデータマイニングでよく利用する処 
理や分析手法,視覚化機能が利用可能 
コア機能 
(データ前処理& 
機械学習) 
データ 
ローダー 
視覚化機能 
ARFF 
CSV 
C4.5 
等 
RDB 
結果 
分析 
機能 
RDB 
視覚化 
された 
モデル・ 
テキスト・ 
オブジェクト 
ファイル 
コマンドラインから利用できる機能
分類・識別モデルの生成・適用手順 
1. 分類・識別モデルの生成(必須) 
◦ 訓練データ集合を入力 
◦ 分類・識別モデルを出力 
◦ 学習アルゴリズムによってモデル(ルールや式な 
ど)を生成(学習とも呼ばれる) 
2. 分類・識別モデルの洗練 
◦ 学習したモデル,検証データ集合を入力 
◦ 洗練したモデルを出力 
◦ 重みづけした訓練用データ集合を出力することもある 
◦ モデルの性能を向上させるため,再度モデルの生 
成などを行うこともある 
3. 分類・識別モデルの評価 
◦ モデルとテストデータ集合を入力 
◦ テストデータに付けてあった正解ラベルと分類・ 
識別モデルの予測ラベルとの比較を行う 
→数値化して比較する 
訓練データ 
集合 
分類・識別モデル 
の生成(学習) 
分類・識別モデル 
の洗練 
検証データ 
集合 
分類・識別モデル 
の評価 
テストデータ 
集合 
分類予測結果付き 
ファイル 
特徴量抽出 
アクチュエータ
Wekaを利用した分類・識別モデルの 
生成手順→分類予測の獲得 
1. データ集合(訓練,テスト(検証用))を用意する 
◦ 入力データ集合はARFF形式に変換する 
◦ テストデータ集合は訓練データ集合と同じ属性情報のもとに構築され 
なければならない 
◦ テストデータ集合はクラスが付いている必要があり→クラスが全く未知の場合はすでにある 
クラスの1つを用いるなど 
2. 分類器・識別モデルを構築する 
◦ 入力:分類学習・パターン認識アルゴリズムに対応するwekaの分類器 
クラス名,訓練データ集合とパラメータ 
◦ 出力:分類器モデル(シリアライズされたオブジェクト) 
3. 分類器・識別モデルをテストデータ集合に適用 
◦ テストデータ集合の各データに構築された分類器・識別モデルによる 
分類予測を付与 
→アクチュエータは付与された予測ラベルを読み取って利用 
※上記の流れはlibSVMやR, Pythonのライブラリなどを利用しても同じ
ARFFの概要 
@relation weather 
@attribute outlook string 
@attribute temperature numeric 
@attribute humidity integer 
@attribute windy {true, false} 
※ARFFはWekaに直接入力できる 
@attribute time_s date “yyMMdd HH:mm” 
@attribute play {yes, no} 
@data 
sunny,85,85,false,010822 10:00,no 
overcast,83,86,false,010911 11:00,yes 
rainy,70,?,true,010921 10:30,yes 
データ集合の記述形式 
データセットの名前 
属性名を縦に列挙する 
数値属性を示す 
(実数:real,整数:integer) 
名義属性は属性値 
をカンマ区切りで示す 
日付はdate+フォーマットで 
定義する 
クラスも他の名義属性と 
同様に記述(実行時に指定) 
@data以降CSV形式の 
データ 
欠損値は’?’で表す
Wekaのコマンドラインでの実行 
1. データ集合(ARFFファイル)を用意する 
◦ データ形式変換: 
$java –cp <weka.jarまでのパス> weka.core.converters.[ファイル形 
式]Loader 入力ファイル名> ARFFファイル名 
◦ フィルタ適用: 
$java –cp <weka.jarまでのパス> weka.filters.フィルタータイプ.対象. 
フィルタ名[各フィルタのパラメータ] –i 入力ファイルARFF名–o 出力 
ファイルARFF名 
2. 分類器・識別モデルを訓練データ集合に対して構築 
◦ $ java –cp <weka.jarまでのパス> 
weka.classifiers.アルゴリズムのタイプ.クラス名 
–t <訓練データ集合ファイル名> -d <分類・識別モデルファイル名> 
3. 分類器・識別モデルをテストデータ集合に適用 
◦ $ java –cp <weka.jarまでのパス> 
weka.classifiersアルゴリズムのタイプ.クラス名 
–T <テストデータ集合ファイル名> -l <分類・識別モデルファイル名>
Wekaの分類器系クラス(weka.classifiers.*) 
共通のコマンドラインオプション 
• -t:訓練データ集合のARFFファイル名 
• -x:n回交差検証(n-fold CV)のnを指定(既定値は10) 
• -c:クラスの属性番号(既定値はlast) 
• -d:出力する分類器・識別モデルのファイル名 
• -T:テストデータ集合の指定 
◦ ただし,これを指定するとモデルファイルは出力されない 
• -l:テストデータに適用する分類器・識別モデルのファ 
イル名 
• -p:分類予測を行って示す属性の範囲を指定する 
(0を指定すると正解として与えたクラス,分類予測ク 
ラス,異なるか( /+),予測確度が表示される)
Wekaに用意された分類器・パターン 
認識アルゴリズムのクラス 
• Wekaの分類器・パターン認識アルゴリズムクラス 
→weka.classfires.分類器タイプ.* 
• 事例ベース学習(IBk, k-NN) 
◦ weka.classifiers.lazy.IBk 
• 決定木学習(J4.8) 
◦ weka.classifiers.trees.J48 
• その他,クラス名は 
エクスプローラーの“分類” 
パネルにある「選択」で表示 
されるように多数ある
事例ベース学習(IBk),決定木(J48)の 
パラメータ 
• パラメータ:アルゴリズムの性能を左右する要因となる 
方法の指定や設定値 
◦ エクスプローラーの“分類”で設定できる値や方法の指定をコマ 
ンドラインオプションで行う 
• 事例ベース学習(weka.classifiers.lazy.IBk) 
◦ -K:k-NNのkを指定 
◦ -A:近隣データの探索方法を指定する 
◦ -A "weka.core.neighboursearch.LinearNNSearch -A "weka.core.EuclideanDistance -R 
first-last"" 
• 決定木(weka.classifiers.trees.J48) 
◦ -M:最少分割時データ数(既定値2) 
◦ -C:枝刈り基準の危険率(既定値0.25) 
◦ -U:枝刈りを行わないことを指定
演習:コマンドラインでのWekaの実行 
• exec_wekaディレクトリ以下でweka-3-6-11.zipを展開 
◦ http://prdownloads.sourceforge.net/weka/weka-3-6-11.zip 
1. 分類器・識別モデルの構築 
2. 分類器・識別モデルの適用
演習: 
コマンドライン実行のスクリプト化 
• ひな形:exec_weka_classifiers.php 
http://weka-jp.info/archives/exec_weka_classifiers.zip 
◦ 第一引数→アルゴリズム名,第二引数→訓練データ集合ファイル名, 
第三引数→テストデータ集合ファイル名 
◦ PHPでの外部コマンド実行→system関数 
◦ exec関数でも実行可能 
◦ 訓練データ集合:$training_set 
◦ テストデータ集合:$test_set 
◦ モデルファイル:$model_file (テストデータ集合ファイル名から生成) 
• 演習内容 
1. 上記変数を使ってコマンドラインからの一連の流れを実行している 
部分を完成させよう 
2. 作成したPHPスクリプトを実行する 
◦ Y:exec_weka> c:xamppphpphp.exe exec_weka_classifiers.php J48 <訓練データ集合ファイル名> < 
テストデータ集合ファイル名> 
3. (可能であれば)実行できるアルゴリズム名を増やしてみよう

More Related Content

What's hot

Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Shohei Taniguchi
 
SCM CRP ERP Decision Support
SCM CRP ERP Decision SupportSCM CRP ERP Decision Support
SCM CRP ERP Decision Supportankit_sharma869
 
Preventing and Managing Supply Chain Disruptions
Preventing and Managing Supply Chain DisruptionsPreventing and Managing Supply Chain Disruptions
Preventing and Managing Supply Chain DisruptionsThomas Tanel
 
WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響NU_I_TODALAB
 
Trends of ICASSP 2022
Trends of ICASSP 2022Trends of ICASSP 2022
Trends of ICASSP 2022Kwanghee Choi
 
Smarter Supplier Management - Improving Supplier Performance Through Better ...
Smarter Supplier Management  - Improving Supplier Performance Through Better ...Smarter Supplier Management  - Improving Supplier Performance Through Better ...
Smarter Supplier Management - Improving Supplier Performance Through Better ...SAP Ariba
 
Data Envelopment Analysis
Data Envelopment AnalysisData Envelopment Analysis
Data Envelopment AnalysisAnna Rellama
 

What's hot (11)

Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)Control as Inference (強化学習とベイズ統計)
Control as Inference (強化学習とベイズ統計)
 
SCM CRP ERP Decision Support
SCM CRP ERP Decision SupportSCM CRP ERP Decision Support
SCM CRP ERP Decision Support
 
Elintarviketeollisuuden tiekartta vähähiilisyyteen
Elintarviketeollisuuden tiekartta vähähiilisyyteenElintarviketeollisuuden tiekartta vähähiilisyyteen
Elintarviketeollisuuden tiekartta vähähiilisyyteen
 
Association rules apriori algorithm
Association rules   apriori algorithmAssociation rules   apriori algorithm
Association rules apriori algorithm
 
EXIM UNIT 1.pptx Dr.Harris Kumar
EXIM UNIT 1.pptx Dr.Harris Kumar EXIM UNIT 1.pptx Dr.Harris Kumar
EXIM UNIT 1.pptx Dr.Harris Kumar
 
Preventing and Managing Supply Chain Disruptions
Preventing and Managing Supply Chain DisruptionsPreventing and Managing Supply Chain Disruptions
Preventing and Managing Supply Chain Disruptions
 
WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響WaveNetが音声合成研究に与える影響
WaveNetが音声合成研究に与える影響
 
Trends of ICASSP 2022
Trends of ICASSP 2022Trends of ICASSP 2022
Trends of ICASSP 2022
 
APRIORI ALGORITHM -PPT.pptx
APRIORI ALGORITHM -PPT.pptxAPRIORI ALGORITHM -PPT.pptx
APRIORI ALGORITHM -PPT.pptx
 
Smarter Supplier Management - Improving Supplier Performance Through Better ...
Smarter Supplier Management  - Improving Supplier Performance Through Better ...Smarter Supplier Management  - Improving Supplier Performance Through Better ...
Smarter Supplier Management - Improving Supplier Performance Through Better ...
 
Data Envelopment Analysis
Data Envelopment AnalysisData Envelopment Analysis
Data Envelopment Analysis
 

Similar to Weka分類学習アルゴリズムの利用法(その1)

VSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkVSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkAtsushi Fukui
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案Kamiya Toshihiro
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]Hideo Takagi
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)Suguru Hamazaki
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Naoki Aoyama
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016wada, kazumi
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905Nobuaki Oshiro
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)Masahiro Hayashi
 
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしようSQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしようA AOKI
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介fukuoka.ex
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターsohta
 
テーマ別勉強会(R言語)#1.pdf
テーマ別勉強会(R言語)#1.pdfテーマ別勉強会(R言語)#1.pdf
テーマ別勉強会(R言語)#1.pdfTakuya Kubo
 

Similar to Weka分類学習アルゴリズムの利用法(その1) (20)

VSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity FrameworkVSUG Day 2010 Summer - Using ADO.NET Entity Framework
VSUG Day 2010 Summer - Using ADO.NET Entity Framework
 
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)
 
Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術Scala の関数型プログラミングを支える技術
Scala の関数型プログラミングを支える技術
 
LDA入門
LDA入門LDA入門
LDA入門
 
Tokyo r28 1
Tokyo r28 1Tokyo r28 1
Tokyo r28 1
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016
 
10分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 090510分で分かるr言語入門ver2.14 15 0905
10分で分かるr言語入門ver2.14 15 0905
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
 
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしようSQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしよう
 
やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介やや関数型を意識した風Elixir/Phoenixご紹介
やや関数型を意識した風Elixir/Phoenixご紹介
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライターgenuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
 
テーマ別勉強会(R言語)#1.pdf
テーマ別勉強会(R言語)#1.pdfテーマ別勉強会(R言語)#1.pdf
テーマ別勉強会(R言語)#1.pdf
 
 
  
 
 

Weka分類学習アルゴリズムの利用法(その1)

  • 1. Wekaによる 機械学習アルゴリズム の実行 その1:PHPスクリプトによるCLIからの 機械アルゴリズムの実行 2014年11月27日 文教大学情報学部情報システム学科阿部秀尚 (hidenao@shonan.bunkyo.ac.jp)
  • 2. システムの構成(概観) センサーに よる電子化 ... 様々な形態の入力 対象システム 識別器構築 処理 アクチュ エータ 特徴量抽出 処理 様々なタスクの実現(出力)
  • 3. 入力データと特徴量抽出 • 表形式データ 構造化データ ◦ →離散値,数値を加工処理 とも呼ぶ • 時系列データ(株価や心電図など) ◦ →時点毎の値,波形特徴量,分類 • 音声データ ◦ →時点毎の値,波形特徴量 • テキストデータ ◦ →特徴語の有無や重要度(bag-of-words) • 画像データ ◦ →画素ごとの値,局所特徴量(bag-of-visual-words) 特徴量抽出 処理を行って 作成 非構造化データ とも呼ぶ
  • 4. Wekaを利用した知能システム構築 ~Wekaとは~ • Weka(ウェカ)は,ワイカト大学(ニュージーランド)の機 械学習グループを中心に作成されたデータマイニングツール • Javaで実装されたオープンソースソフトウェア • 各種インタフェースからデータマイニングでよく利用する処 理や分析手法,視覚化機能が利用可能 コア機能 (データ前処理& 機械学習) データ ローダー 視覚化機能 ARFF CSV C4.5 等 RDB 結果 分析 機能 RDB 視覚化 された モデル・ テキスト・ オブジェクト ファイル コマンドラインから利用できる機能
  • 5. 分類・識別モデルの生成・適用手順 1. 分類・識別モデルの生成(必須) ◦ 訓練データ集合を入力 ◦ 分類・識別モデルを出力 ◦ 学習アルゴリズムによってモデル(ルールや式な ど)を生成(学習とも呼ばれる) 2. 分類・識別モデルの洗練 ◦ 学習したモデル,検証データ集合を入力 ◦ 洗練したモデルを出力 ◦ 重みづけした訓練用データ集合を出力することもある ◦ モデルの性能を向上させるため,再度モデルの生 成などを行うこともある 3. 分類・識別モデルの評価 ◦ モデルとテストデータ集合を入力 ◦ テストデータに付けてあった正解ラベルと分類・ 識別モデルの予測ラベルとの比較を行う →数値化して比較する 訓練データ 集合 分類・識別モデル の生成(学習) 分類・識別モデル の洗練 検証データ 集合 分類・識別モデル の評価 テストデータ 集合 分類予測結果付き ファイル 特徴量抽出 アクチュエータ
  • 6. Wekaを利用した分類・識別モデルの 生成手順→分類予測の獲得 1. データ集合(訓練,テスト(検証用))を用意する ◦ 入力データ集合はARFF形式に変換する ◦ テストデータ集合は訓練データ集合と同じ属性情報のもとに構築され なければならない ◦ テストデータ集合はクラスが付いている必要があり→クラスが全く未知の場合はすでにある クラスの1つを用いるなど 2. 分類器・識別モデルを構築する ◦ 入力:分類学習・パターン認識アルゴリズムに対応するwekaの分類器 クラス名,訓練データ集合とパラメータ ◦ 出力:分類器モデル(シリアライズされたオブジェクト) 3. 分類器・識別モデルをテストデータ集合に適用 ◦ テストデータ集合の各データに構築された分類器・識別モデルによる 分類予測を付与 →アクチュエータは付与された予測ラベルを読み取って利用 ※上記の流れはlibSVMやR, Pythonのライブラリなどを利用しても同じ
  • 7. ARFFの概要 @relation weather @attribute outlook string @attribute temperature numeric @attribute humidity integer @attribute windy {true, false} ※ARFFはWekaに直接入力できる @attribute time_s date “yyMMdd HH:mm” @attribute play {yes, no} @data sunny,85,85,false,010822 10:00,no overcast,83,86,false,010911 11:00,yes rainy,70,?,true,010921 10:30,yes データ集合の記述形式 データセットの名前 属性名を縦に列挙する 数値属性を示す (実数:real,整数:integer) 名義属性は属性値 をカンマ区切りで示す 日付はdate+フォーマットで 定義する クラスも他の名義属性と 同様に記述(実行時に指定) @data以降CSV形式の データ 欠損値は’?’で表す
  • 8. Wekaのコマンドラインでの実行 1. データ集合(ARFFファイル)を用意する ◦ データ形式変換: $java –cp <weka.jarまでのパス> weka.core.converters.[ファイル形 式]Loader 入力ファイル名> ARFFファイル名 ◦ フィルタ適用: $java –cp <weka.jarまでのパス> weka.filters.フィルタータイプ.対象. フィルタ名[各フィルタのパラメータ] –i 入力ファイルARFF名–o 出力 ファイルARFF名 2. 分類器・識別モデルを訓練データ集合に対して構築 ◦ $ java –cp <weka.jarまでのパス> weka.classifiers.アルゴリズムのタイプ.クラス名 –t <訓練データ集合ファイル名> -d <分類・識別モデルファイル名> 3. 分類器・識別モデルをテストデータ集合に適用 ◦ $ java –cp <weka.jarまでのパス> weka.classifiersアルゴリズムのタイプ.クラス名 –T <テストデータ集合ファイル名> -l <分類・識別モデルファイル名>
  • 9. Wekaの分類器系クラス(weka.classifiers.*) 共通のコマンドラインオプション • -t:訓練データ集合のARFFファイル名 • -x:n回交差検証(n-fold CV)のnを指定(既定値は10) • -c:クラスの属性番号(既定値はlast) • -d:出力する分類器・識別モデルのファイル名 • -T:テストデータ集合の指定 ◦ ただし,これを指定するとモデルファイルは出力されない • -l:テストデータに適用する分類器・識別モデルのファ イル名 • -p:分類予測を行って示す属性の範囲を指定する (0を指定すると正解として与えたクラス,分類予測ク ラス,異なるか( /+),予測確度が表示される)
  • 10. Wekaに用意された分類器・パターン 認識アルゴリズムのクラス • Wekaの分類器・パターン認識アルゴリズムクラス →weka.classfires.分類器タイプ.* • 事例ベース学習(IBk, k-NN) ◦ weka.classifiers.lazy.IBk • 決定木学習(J4.8) ◦ weka.classifiers.trees.J48 • その他,クラス名は エクスプローラーの“分類” パネルにある「選択」で表示 されるように多数ある
  • 11. 事例ベース学習(IBk),決定木(J48)の パラメータ • パラメータ:アルゴリズムの性能を左右する要因となる 方法の指定や設定値 ◦ エクスプローラーの“分類”で設定できる値や方法の指定をコマ ンドラインオプションで行う • 事例ベース学習(weka.classifiers.lazy.IBk) ◦ -K:k-NNのkを指定 ◦ -A:近隣データの探索方法を指定する ◦ -A "weka.core.neighboursearch.LinearNNSearch -A "weka.core.EuclideanDistance -R first-last"" • 決定木(weka.classifiers.trees.J48) ◦ -M:最少分割時データ数(既定値2) ◦ -C:枝刈り基準の危険率(既定値0.25) ◦ -U:枝刈りを行わないことを指定
  • 12. 演習:コマンドラインでのWekaの実行 • exec_wekaディレクトリ以下でweka-3-6-11.zipを展開 ◦ http://prdownloads.sourceforge.net/weka/weka-3-6-11.zip 1. 分類器・識別モデルの構築 2. 分類器・識別モデルの適用
  • 13. 演習: コマンドライン実行のスクリプト化 • ひな形:exec_weka_classifiers.php http://weka-jp.info/archives/exec_weka_classifiers.zip ◦ 第一引数→アルゴリズム名,第二引数→訓練データ集合ファイル名, 第三引数→テストデータ集合ファイル名 ◦ PHPでの外部コマンド実行→system関数 ◦ exec関数でも実行可能 ◦ 訓練データ集合:$training_set ◦ テストデータ集合:$test_set ◦ モデルファイル:$model_file (テストデータ集合ファイル名から生成) • 演習内容 1. 上記変数を使ってコマンドラインからの一連の流れを実行している 部分を完成させよう 2. 作成したPHPスクリプトを実行する ◦ Y:exec_weka> c:xamppphpphp.exe exec_weka_classifiers.php J48 <訓練データ集合ファイル名> < テストデータ集合ファイル名> 3. (可能であれば)実行できるアルゴリズム名を増やしてみよう