博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
weka 集成学习
阅读量:6486 次
发布时间:2019-06-24

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

import java.io.*;

import weka.classifiers.*;
import weka.classifiers.meta.Vote;
import weka.core.Instance;
import weka.core.Instances;
import weka.core.SelectedTag;
import weka.core.converters.ArffLoader;
public class test {

/**

* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Instances tranIns=null; //训练数据
Instances testIns=null; //测试数据
Classifier cfs1=null; //分类器1
Classifier cfs2=null; //分类器2
Classifier cfs3=null; //分类器3
Classifier []cfsArray=new Classifier[3]; //分类器数组
try
{
File file=new File("C://Program Files//Weka-3-6//data//segment-challenge.arff"); //训练数据
ArffLoader loader=new ArffLoader();
loader.setFile(file);
tranIns=loader.getDataSet(); //读入数据
file=new File("C://Program Files//Weka-3-6//data//segment-test.arff"); //测试数据
loader.setFile(file);
testIns=loader.getDataSet();
testIns.setClassIndex(testIns.numAttributes()-1); //设置类别的位置
tranIns.setClassIndex(tranIns.numAttributes()-1);
cfs1=(Classifier)Class.forName("weka.classifiers.bayes.NaiveBayes").newInstance(); //算法
cfs2=(Classifier)Class.forName("weka.classifiers.trees.J48").newInstance();
cfs3=(Classifier)Class.forName("weka.classifiers.rules.ZeroR").newInstance();
cfsArray[0]=cfs1;
cfsArray[1]=cfs2;
cfsArray[2]=cfs3;
//分类器的决策方式
Vote ensemble=new Vote();
SelectedTag tag1=new SelectedTag(Vote.MAJORITY_VOTING_RULE,Vote.TAGS_RULES);//(投票)
ensemble.setCombinationRule(tag1);
ensemble.setClassifiers(cfsArray);
ensemble.setSeed(2); //设置随机种子
ensemble.buildClassifier(tranIns); //训练分类器
Instance testInst;
Evaluation testingEvaluation1=new Evaluation(testIns); //检测分类模型的类
Evaluation testingEvaluation2=new Evaluation(testIns);
Evaluation testingEvaluation3=new Evaluation(testIns);
Evaluation testingEvaluation4=new Evaluation(testIns);
int length=testIns.numInstances();
//单独学习
for(int i=0;i<length;i++)
{
testInst=testIns.instance(i);
testingEvaluation1.evaluateModelOnceAndRecordPrediction(cfs1, testInst);
}
System.out.println("分类正确率:"+(1- testingEvaluation1.errorRate()));
for(int i=0;i<length;i++)
{
testInst=testIns.instance(i);
testingEvaluation2.evaluateModelOnceAndRecordPrediction(cfs2, testInst);
}
System.out.println("分类正确率:"+(1- testingEvaluation2.errorRate()));
for(int i=0;i<length;i++)
{
testInst=testIns.instance(i);
testingEvaluation3.evaluateModelOnceAndRecordPrediction(cfs3, testInst);
}
System.out.println("分类正确率:"+(1- testingEvaluation3.errorRate()));
//集成学习
for(int i=0;i<length;i++)
{
testInst=testIns.instance(i);
testingEvaluation4.evaluateModelOnceAndRecordPrediction(ensemble, testInst);
}
System.out.println("分类正确率:"+(1- testingEvaluation4.errorRate()));
}
catch(Exception e)
{
e.printStackTrace();
}
}

}

转载于:https://www.cnblogs.com/GuoJiaSheng/p/3829901.html

你可能感兴趣的文章
从CVS迁移到SVN
查看>>
总部与前线
查看>>
微软推出Windows 10专业教育版:Cortana没了
查看>>
TensorFlow教程之API DOC 6.1.2Class tensorflow::EnvWrapper
查看>>
多目标跟踪突破:上交大&中兴 MOT Challenge 测评获第一
查看>>
控制ASP.NET Web API 调用频率
查看>>
系统诊断小技巧(7):利用Iptables进行排查和诊断的简易方案
查看>>
IPv6的渗透率比人们想象的要快速?
查看>>
针对Windows零日漏洞,微软是不是太过“无作为”了?
查看>>
推特解散商业团队 终止开发“Buy”按钮
查看>>
英特尔SSD:17年将专注于3D NAND和PCIe
查看>>
python (3):wxPython打包app,报错
查看>>
给网站更换服务器需要注意什么?
查看>>
成长型企业ERP系统实施的八大准则
查看>>
nginx重启脚本
查看>>
理解Linux系统/etc/init.d目录和/etc/rc.local脚本
查看>>
代码整洁之道
查看>>
svm 预测标签的概率输出
查看>>
ActiveMQ(25):优化与建议
查看>>
使用Intelij Idea经过的坑
查看>>