Ich habe versucht, Stacking-Methode weka api in Java zu verwenden und fand ein Tutorial für einzelne Klassifikator. Ich habe versucht, Stacking mit der in der Tutorial-Methode beschriebenen Methode zu implementieren, aber die Klassifizierung erfolgt mit Standard Zero Classifier in Weka.Ich konnte Meta-Classifier mit "setMetaClassifier" setzen, aber nicht in der Lage, den Basis-Classifier zu ändern. Was ist die richtige Methode zu Set-Base-Klassifikator im Stacking?Wie kann der Basisklassifikator bei Verwendung der Weka-API in der Stapelmethode angegeben werden?
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Random;
import weka.classifiers.Evaluation;
import weka.classifiers.meta.Stacking;
import weka.core.Instances;
public class startweka {
public static void main(String[] args) throws Exception{
BufferedReader breader=new BufferedReader(new FileReader("C:/newtrain.arff"));
Instances train=new Instances(breader);
train.setClassIndex(train.numAttributes()-1);
breader.close();
String[] stackoptions = new String[1];
{
stackoptions[0] = "-w weka.classifiers.functions.SMO";
}
Stacking nb=new Stacking();
J48 j48=new J48();
SMO jj=new SMO();
nb.setMetaClassifier(j48);
nb.buildClassifier(train);
Evaluation eval=new Evaluation(train);
eval.crossValidateModel(nb, train, 10, new Random(1));
System.out.println(eval.toSummaryString("results",true));
}}