weka 交叉验证
来源:互联网 发布:淘宝订单能删除吗 编辑:程序博客网 时间:2024/06/02 04:15
调用weka实现交叉验证,并搭载图形界面
import weka.classifiers.Classifier;import weka.classifiers.Evaluation;import weka.classifiers.bayes.NaiveBayes;import weka.classifiers.evaluation.ThresholdCurve;import weka.core.Instances;import weka.core.Utils;import weka.gui.visualize.Plot2D;import weka.gui.visualize.PlotData2D;import weka.gui.visualize.ThresholdVisualizePanel;import javax.swing.*;import java.awt.*;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.Arrays;import java.util.Random;public class ROC { public static void main(String[] args) throws Exception { String filePath = "d:/data/segment-challenge.arff"; BufferedReader buf = new BufferedReader(new FileReader(new File(filePath))); Instances instance = new Instances(buf); //获取属性 instance.setClassIndex(instance.numAttributes() - 1); //获取分类器 Classifier classifier = new NaiveBayes(); //评价分类模型 Evaluation evaluation = new Evaluation(instance); //交叉验证 分类器,数据实例,交叉数目, evaluation.crossValidateModel(classifier, instance, 10, new Random(1)); ThresholdCurve tc = new ThresholdCurve(); //classIndex是类作为positive的索引 int classIndex = 0; Instances instances = tc.getCurve(evaluation.predictions(), classIndex); System.out.println("Roc curve" + evaluation.areaUnderROC(classIndex)); //获取TP,Fp int tpIndex = instances.attribute(ThresholdCurve.TP_RATE_NAME).index(); int fpIndex = instances.attribute(ThresholdCurve.TP_RATE_NAME).index(); double[] tpRate = instances.attributeToDoubleArray(tpIndex); double[] fpRate = instances.attributeToDoubleArray(fpIndex);// System.out.println(Arrays.toString(tpRate)+Arrays.toString(fpRate)); for (double tp : tpRate) { System.out.println(tp); } for (double fp : fpRate) { System.out.println(fp); } //使用instances对象显示ROC曲面 ThresholdVisualizePanel tvp = new ThresholdVisualizePanel(); tvp.setROCString("(Area under ROC=" + Utils.doubleToString(tc.getROCArea(instances), 4) + ")"); tvp.setName(instances.relationName()); PlotData2D pd = new PlotData2D(instances); tvp.addPlot(pd); String plotName = tvp.getName(); final javax.swing.JFrame jf = new javax.swing.JFrame( "WeKa classifier visualize:" + plotName); jf.setSize(500, 400); jf.getContentPane().setLayout(new BorderLayout()); jf.getContentPane().add(tvp, BorderLayout.CENTER); jf.addWindowFocusListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent e) { jf.dispose(); } }); jf.setVisible(true); }}
运行结果
0 0
- weka 交叉验证
- Weka 交叉验证相关类的使用
- weka进行十折交叉验证
- 在Java中使用weka:产生折叠交叉验证
- Java调用weka.jar利用交叉验证方法进行分类
- 交叉验证的Java weka实现,并保存和重载模型
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 交叉验证
- 鸟哥的linux学习笔记
- 算法练习笔记(八)—— 寻找最大路径树
- js中的事件触发(非常详细)
- JDBC驱动问题
- 服务端socket
- weka 交叉验证
- 转载别人的一些经验
- HTML禁止复制粘贴以及禁止下载图片的小技巧
- 112.模拟杀毒软件小火箭
- Ruby 安装
- centos6.5ip分配以及用户和用户组的操作
- marchine learning 斯皮尔曼排名相关系数
- XAMPP下更改时区或者时间与本地时间相差固定小时
- 0和5