Java 使用Weka API时,如何在堆叠方法中指定基本分类器?

Java 使用Weka API时,如何在堆叠方法中指定基本分类器?,java,api,weka,Java,Api,Weka,我试图在java中使用堆叠方法WEKAAPI,并找到了一个关于单个分类器的教程。我尝试使用教程方法中描述的方法实现堆叠,但在Weka中使用默认的零分类器进行分类。我能够使用“setMetaClassifier”设置元分类器,但无法更改基本分类器。在堆叠中设置基本分类器的正确方法是什么 import java.io.BufferedReader; import java.io.FileReader; import java.util.Random; import weka.classifi

我试图在java中使用堆叠方法WEKAAPI,并找到了一个关于单个分类器的教程。我尝试使用教程方法中描述的方法实现堆叠,但在Weka中使用默认的零分类器进行分类。我能够使用“setMetaClassifier”设置元分类器,但无法更改基本分类器。在堆叠中设置基本分类器的正确方法是什么

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)); 
                        }} 

好的,我在其他论坛weka-nabble中找到了答案。设置基本分类器的代码是

Stacking nb=new Stacking();
SMO smo=new SMO();
Classifier[] stackoptions = new Classifier[1];
stackoptions[0] = smo;
nb.setClassifiers(stackoptions);

Stacking nb=new Stacking();
SMO smo=new SMO();
Classifier[] stackoptions = new Classifier[] {smo};
nb.setClassifiers(stackoptions);