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

标签 java api weka

我试图在 java 中使用堆叠方法 weka api,并找到了单个分类器的教程。我尝试使用教程方法中描述的方法实现堆叠,但分类是使用 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);

关于java - 使用Weka API时如何在堆叠方法中指定基分类器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041223/

相关文章:

Java 泛型类 < ?扩展接口(interface) > 作为参数

java - 一些参数没有传递给 super() 构造函数

api - 是否有使用 sun.jdbc.odbc.JdbcOdbcDriver 的替代方法?

javascript - 带有Angular的ASP.NET Core上的级联下拉列表

android - 如何在 android v2 map 上显示 map 比例尺

algorithm - J48 和马尔可夫链之间的区别

java - 无法在 Java 代码中使用 Weka 的 PCA 过滤器

java - android-numberpicker 可以实例化成View吗?

machine-learning - 如何使用weka删除冗余特征

java - JPA Hibernate 集合未延迟加载