このブログを検索

2013年8月20日火曜日

[Weka][Java]Wekaによるデータマイニング(インスタンスの作成)

今回はWekaをJavaで動かす際にはまった点に関してまとめます.
なお,WekaのインストールやJavaでの実行までは他ブログ様においていろいろ述べられておりますので割愛しまして,簡単なサンプル実行の際に戸惑ったことをまとめます.

私はソースの書き方に関してこちらのブログ様を参照させていただきました. ただ,単純にコピペでは動作せず...(Wekaのバージョンの関係?)戸惑ったのでまずメモします.はまった点は Instanceのあたりでエラーとなり,そもそもビルドできないというものです.

これは何処かの英語の記事で書かれていた通り
 ★InstanceはInterfaceなので実装されたInstanceから(Javaの)インスタンスを生成する必要がある.すなわちDenseInstanceクラスをつかえとのことでした.


従って上記コードを


にすることで解決します.


ただ,これだけではまた後日エラーが発生してしまいました.今度は実行時エラーでsetValueにてjava.lang.IndexOutOfBoundsExceptionが発生するというものでした.ソースを追いかけてみると,setValue(Attribute, String)等において,Attributeのm_Indexの値から配列を参照しており,AttributeのコンストラクタにおいてIndexを指定しない場合-1に自動でなるので,OutOfBoundsと.
ですので,まずInstancesを生成し,AttributesにIndexを付番しておくことで改善されました.以下コードです.

以上.