現在、Java コードで次のように Weka 決定木 (またはその他の) 分類子を使用している場合:
// Get training and testing data.
Instances train = new Instances ("from training file");
train.setClassIndex(train.numAttributes() - 1);
Instances test = new Instances ("from testing file");
test.setClassIndex(test.numAttributes() - 1);
// Set classifier.
Object obj = Class.forName("weka.classifiers.trees.J48").newInstance();
Classifier cls = (Classifier) Class.forName("weka.classifiers.trees.J48").cast(obj);
// Set parameters for classifier.
String options = ("-C 0.05 -M 2");
String[] optionsArray = options.split(" ");
cls.setOptions(optionsArray);
// Train classifier.
cls.buildClassifier(train);
Evaluation eval = new Evaluation(train);
// Test trained classifier.
eval.evaluateModel(cls, test);
結果を後押しするためにバギングなどのメタ分類子を使用したい場合はどうなりますか? Weka の Explorer で、トレーニング データとテスト データにバギングを使用すると、分類子のパラメーター文字列は次のようになります。
weka.classifiers.meta.Bagging -P 100 -S 1 -num-slots 1 -I 10 -W weka.classifiers.trees.J48 -- -C 0.25 -M 2
これのコード表現が何であるかを知っている人はいますか?
理想的には、分類子とメタ分類子のクラスをデータベース テーブルに格納します。つまり、次のようになります。
Object obj = Class.forName("weka.classifiers.trees.J48").newInstance();
になります:
Object obj = Class.forName(classifier.getWekaClass()).newInstance();
また、J48 から NB に分類子を交換した場合にパラメータを簡単に変更できるように、パラメータをデータベース テーブルにリストすることもできます。
私はこれが私が探しているものだと信じていますが...
http://weka.wikispaces.com/Use+WEKA+in+your+Java+code#Attribute selection-Meta-Classifier