博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Weka集成分类器
阅读量:2395 次
发布时间:2019-05-10

本文共 2730 字,大约阅读时间需要 9 分钟。

package cn.edu.xmu.bdm.wekainjava.test;import java.io.File;import weka.classifiers.Classifier;import weka.classifiers.Evaluation;import weka.classifiers.bayes.NaiveBayes;import weka.classifiers.functions.LibSVM;import weka.classifiers.meta.Vote;import weka.core.Instances;import weka.core.SelectedTag;import cn.edu.xmu.bdm.wekainjava.utils.WekaFactory;import cn.edu.xmu.bdm.wekainjava.utils.WekaFactoryImpl;public class EnsembleTest {public static void main(String[] args) throws Exception {// LibSVM classifier = new LibSVM();File trainFile = new File("C://Program Files//Weka-3-6//data//segment-challenge.arff");File testFile = new File("C://Program Files//Weka-3-6//data//segment-test.arff");/*** 1. 获取weka工厂类*/WekaFactory wi = WekaFactoryImpl.getInstance();/*** 3. 从工厂中获取训练样本和测试样本实例*/Instances instancesTrain = wi.getInstance(trainFile);instancesTrain.setClassIndex(instancesTrain.numAttributes() - 1);Instances instancesTest = wi.getInstance(testFile);instancesTest.setClassIndex(instancesTest.numAttributes() - 1);/*** 2. 从工厂中获取分类器 具体使用哪一种特定的分类器可以选择 这样就构建了一个简单的分类器*/Classifier j48 = (Classifier) wi.getClassifier(LibSVM.class);Classifier naiveBayes = (Classifier)wi.getClassifier(NaiveBayes.class);Classifier libSVM = (Classifier)wi.getClassifier(LibSVM.class);/*** 2.1 设置集成分类器*/Classifier[] cfsArray = new Classifier[3]; cfsArray[0] = j48;cfsArray[1] = naiveBayes;cfsArray[2] = libSVM;/*** 2.2 定制集成分类器的决策方式* AVERAGE_RULE* PRODUCT_RULE* MAJORITY_VOTING_RULE* MIN_RULE* MAX_RULE* MEDIAN_RULE* 它们具体的工作方式,参考weka的说明文档。* 通常情况下选择的是多数投票的决策规则*/Vote ensemble = new Vote();SelectedTag tag = new SelectedTag(Vote.MAJORITY_VOTING_RULE, Vote.TAGS_RULES);ensemble.setCombinationRule(tag);ensemble.setClassifiers(cfsArray);//设置随机数种子ensemble.setSeed(2);//训练ensemble分类器ensemble.buildClassifier(instancesTrain);/*** 5. 从工厂中获取使用Evaluation,测试样本测试分类器的学习效果*/double sum = instancesTrain.numInstances();Evaluation testingEvaluation = wi.getEvaluation(ensemble, instancesTest);int length = instancesTest.numInstances();for (int i = 0; i < length; i++) {// 通过这个方法来用每个测试样本测试分类器的效果testingEvaluation.evaluateModelOnceAndRecordPrediction(ensemble,instancesTest.instance(i));}// double[][] confusionMatrix = testingEvaluation.confusionMatrix();// for (int i = 0; i < confusionMatrix.length; i++) {// double[] ds = confusionMatrix[i];// for (int j = 0; j < ds.length; j++) {// System.out.print(ds[j]);// }// System.out.println();// }System.out.println(testingEvaluation.toSummaryString());System.out.println(testingEvaluation.toMatrixString());System.out.println(testingEvaluation.toClassDetailsString());// System.out.println(testingEvaluation.toCumulativeMarginDistributionString());System.out.println("分类器的正确率:" + (1 - testingEvaluation.errorRate()));}}
 

转载地址:http://zvwob.baihongyu.com/

你可能感兴趣的文章
学好C语言,你只需要这几句口诀!
查看>>
选择大于努力!0基础学好C语言编程,首先要掌握的是什么?
查看>>
C语言和其他语言的不得不说的差别!
查看>>
夫妻俩在互联网公司工作,年收入曝光,网友:这么高!
查看>>
程序员5年工作经验,因频繁跳槽被面试官压工资!
查看>>
职场中神奇的程序员,却常常被人说“太直”,这是什么样的思维?
查看>>
@初学编程的朋友们,如果你能学得这些方法,学习将会更快一步!
查看>>
C/C++编程笔记:C/C++ 的编译和链接
查看>>
C/C++编程知识分享:C++四种强制转换,教你多种类型转换方式!
查看>>
全球最厉害的 14 位程序员,你知道几位呢?最厉害的研究出了它!
查看>>
C/C++基础语法复习(二):C++ 面向对象编程,你需要知道的点
查看>>
简述 C语言 有和 C++ 的基本区别,你真的懂吗?(新手面试必学)
查看>>
刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
查看>>
C/C++之QT攻略——在QT中容易遇到的那些坑,千万别踩了!
查看>>
@90后程序员,“颜值即正义”的现在,程序员应该如何更新穿搭?
查看>>
程序员须知:必须建立个人知识库,它的重要性你需要了解一下!
查看>>
C/C++知识分享番外:如何申请一个腾讯地图用户Key?
查看>>
程序员提高编程技术最有效的一件事?了解一下,迅速提升自己!
查看>>
程序员想找工作怎么办?如果记住这一点,不怕找不到好工作!
查看>>
程序员找工作时,大公司 VS 小公司,应该如何做出正确的选择?
查看>>