ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-05-17 09:47:13  阅读:231  来源: 互联网

标签:java weka api


我试图在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
来源: https://codeday.me/bug/20190517/1120308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有