import java.io.File; import weka.classifiers.Classifier; import weka.classifiers.Evaluation; import weka.core.Instance; import weka.core.Instances; import weka.core.converters.ArffLoader; public class Test { public void main(String[] agrs) { try { /* * 读入训练序列、测试样本 * 这里将训练序列和测试样本作为同一个样本 */ File file = new file("D://Program Files//Weka-3-6//data//contatct-lenses.arff"); ArffLoader loader = new ArffLoader(); loader.setFile(file); Instances ins = loader.getDateSet(); //使用样本之前,一定要首先设置instances的classIndex,否则在使用时会抛出异常 ins.setClassIndex(ins.numAttributes()-1); /* *初始化分类器 *具体使用哪一种特定的分类器可以进行选择,将特定分类器的名称放到forName函数 *这样就构建了一个简单的分类器 */ Classifier cfs = (Classifier)Class.foreName("weka.classifiers.bayes.NavieBayes").newInstance(); /* *使用训练样本训练分类器 */
cfs.buildClassifier(ins); /* *使用测试样本测试分类器的学习效果
*这里使用的训练样本和测试样本是同一个,实际中需要读入一个特定的测试样本 */ Instance testIns; /* * Evaluation: Class for evaluating machine learning models * 即它是用于检测分类模型的类 */ Evaluation testingEvaluation = new Evaluation(ins); int length = ins.numInstances();
for (int i =0; i < length; i++) {
testInst = ins.instance(i); //通过这个方法来用每个测试样本测试分类器的效果 testingEvaluation.evaluateModelOnceAndRecordPrediction(cfs, testInst); } /* * 打印分类结果 * 在这里我们打印了分类器的正确率 * 其它的一些信息我们可以通过Evaluation对象的其它方法得到 */ System.out.println( "分类器的正确率:" + (1- testingEvaluation.errorRate())); }catch(Exception e) { e.printStackTrace(); } } }
链接:http://blog.csdn.net/anqiang1984/article/details/4040571
数据挖掘的一般过程
1.读入训练、测试样本
2.初始化分类器
3.使用训练样本训练分类器
4.使用测试样本测试分类器的学习效果
5.打印分类结果