WEKA

WEKA のページ (http://www.cs.waikato.ac.nz/ml/weka/)中の Download から "Other platforms (Linux etc.)"用の weka-3-6-3.zip をダウンロード.ただし,張られているリンク先は weka-3-6-2.zip のため,http://prdownloads.sourceforge.net/weka/weka-3-6-3.zip へ直接アクセス.

Download のページに書かれているとおり,weka-3-6-3.zip を unzip し,起動すると,GUI のソフトが動作した.

API の利用

Iris データを Naive Bayes により分類する.学習データと同じ値をもつデータを事例(テストサンプル)として与えた結果,正しく分類された.

import weka.classifiers.Classifier;
import weka.classifiers.Evaluation;
import weka.classifiers.bayes.NaiveBayes;
import weka.core.Attribute;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

public class WekaTest {

  public static void main(String[] args) {
    try {
      //データセットとして Iris データを用いる
      DataSource source = new DataSource("iris.arff");
      Instances instances = source.getDataSet();
      instances.setClassIndex(4);	// クラスの次元

      //分類器の生成
      Classifier classifier = new NaiveBayes();
      classifier.buildClassifier(instances);

      //分類器を評価する
      Evaluation eval = new Evaluation(instances);
      eval.evaluateModel(classifier, instances);
      System.out.println(eval.toSummaryString());

      //事例(テストデータ)の属性を設定
      Attribute sepallength = new Attribute("sepallength", 0);
      Attribute sepalwidth = new Attribute("sepalwidth", 1);
      Attribute petallength = new Attribute("petallength", 2);
      Attribute petalwidth = new Attribute("petalwidth", 3);

      //事例(テストデータ)の値を設定
      //(メモ)学習データのうち,Iris-versicolor クラスの1個目の値をセットする.
      //      classifyInstance() の結果は 1.0 となるはず.
      Instance instance = new Instance(4);	// 属性数 (4次元)
      instance.setValue(sepallength, 7.0);
      instance.setValue(sepalwidth, 3.2);
      instance.setValue(petallength, 4.7);
      instance.setValue(petalwidth, 1.4);
      instance.setDataset(instances);

      //事例を分類させて結果を得る
      double result = classifier.classifyInstance(instance);
      System.out.println(result);
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

}

結果は以下のとおり.クラス2(1.0)と判定された.

$ java -cp weka-3-6-3/weka.jar:. WekaTest

Correctly Classified Instances         144               96      %
Incorrectly Classified Instances         6                4      %
Kappa statistic                          0.94  
Mean absolute error                      0.0324
Root mean squared error                  0.1495
Relative absolute error                  7.2883 %
Root relative squared error             31.7089 %
Total Number of Instances              150     

1.0

追記

WEKA は,Ubuntu 10.04 のパッケージにも入っていました.バージョンは 3.6.0.