第一周-调用weka算法进行数据挖掘

  • 简单数据集data.txt

    @relation weather
    
    @attribute outlook {sunny, overcast, rainy}
    @attribute temperature numeric
    @attribute humidity numeric
    @attribute windy {TRUE, FALSE}
    @attribute play {yes, no} @data
    sunny,85,85,FALSE,no
    sunny,80,90,TRUE,no
    overcast,83,86,FALSE,yes
    rainy,70,96,FALSE,yes
    rainy,68,80,FALSE,yes
    rainy,65,70,TRUE,no
    overcast,64,65,TRUE,yes
    sunny,72,95,FALSE,no
    sunny,69,70,FALSE,yes
    rainy,75,80,FALSE,yes
    sunny,75,70,TRUE,yes
    overcast,72,90,TRUE,yes
    overcast,81,75,FALSE,yes
    rainy,71,91,TRUE,no
  • 在eclipse中新建项目导入weka.jar包,调用weka中的一些算法。

    package test;

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import weka.classifiers.Classifier;
    import weka.classifiers.Evaluation;
    import weka.classifiers.evaluation.NominalPrediction;
    import weka.classifiers.rules.DecisionTable;
    import weka.classifiers.rules.PART;
    import weka.classifiers.trees.DecisionStump;
    import weka.classifiers.trees.J48;
    import weka.core.FastVector;
    import weka.core.Instances; @SuppressWarnings("deprecation")
    public class WeakTest {
    public static BufferedReader readDataFile(String filename) {
    BufferedReader inputReader = null; try {
    inputReader = new BufferedReader(new FileReader(filename));
    } catch (FileNotFoundException ex) {
    System.err.println("File not found: " + filename);
    } return inputReader;
    } public static Evaluation classify(Classifier model,
    Instances trainingSet, Instances testingSet) throws Exception {
    Evaluation evaluation = new Evaluation(trainingSet); model.buildClassifier(trainingSet);
    evaluation.evaluateModel(model, testingSet); return evaluation;
    } public static double calculateAccuracy(FastVector predictions) {
    double correct = 0; for (int i = 0; i < predictions.size(); i++) {
    NominalPrediction np = (NominalPrediction) predictions.elementAt(i);
    if (np.predicted() == np.actual()) {
    correct++;
    }
    } return 100 * correct / predictions.size();
    } public static Instances[][] crossValidationSplit(Instances data, int numberOfFolds) {
    Instances[][] split = new Instances[2][numberOfFolds]; for (int i = 0; i < numberOfFolds; i++) {
    split[0][i] = data.trainCV(numberOfFolds, i);
    split[1][i] = data.testCV(numberOfFolds, i);
    } return split;
    } public static void main(String[] args) throws Exception {
    BufferedReader datafile = readDataFile("E:\\yuce/data.txt"); Instances data = new Instances(datafile);
    data.setClassIndex(data.numAttributes() - 1); // Do 10-split cross validation
    Instances[][] split = crossValidationSplit(data, 10); // Separate split into training and testing arrays
    Instances[] trainingSplits = split[0];
    Instances[] testingSplits = split[1]; // Use a set of classifiers
    Classifier[] models = {
    new J48(), // a decision tree
    new PART(),
    new DecisionTable(),//decision table majority classifier
    new DecisionStump() //one-level decision tree
    }; // Run for each model
    for (int j = 0; j < models.length; j++) { // Collect every group of predictions for current model in a FastVector
    FastVector predictions = new FastVector(); // For each training-testing split pair, train and test the classifier
    for (int i = 0; i < trainingSplits.length; i++) {
    Evaluation validation = classify(models[j], trainingSplits[i], testingSplits[i]); predictions.appendElements(validation.predictions()); // Uncomment to see the summary for each training-testing pair.
    //System.out.println(models[j].toString());
    } // Calculate overall accuracy of current classifier on all splits
    double accuracy = calculateAccuracy(predictions); // Print current classifier's name and accuracy in a complicated,
    // but nice-looking way.
    System.out.println("Accuracy of " + models[j].getClass().getSimpleName() + ": "
    + String.format("%.2f%%", accuracy)
    + "\n---------------------------------");
    } }
    }
  • 运行截图

第一周-调用weka算法进行数据挖掘的更多相关文章

  1. 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng

    课程主页:https://www.coursera.org/learn/machine-learning/home/welcome 收集再多的资料也没用,关键是要自己理解总结,做笔记就是一个归纳总结的 ...

  2. Weka算法Classifier-tree-J48源代码分析(一个)基本数据结构和算法

    大约一年,我没有照顾的博客,再次拿起笔不知从何写上,想来想去手从最近使用Weka要正确书写. Weka为一个Java基础上的机器学习工具.上手简单,并提供图形化界面.提供如分类.聚类.频繁项挖掘等工具 ...

  3. 20172328 2018-2019《Java软件结构与数据结构》第一周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第一周学习总结 概述 Generalization 本周学习了软件质量.数据结构以及算法分析的具体内容,主要依托于所用教材 ...

  4. 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结

    20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...

  5. 20172302 《Java软件结构与数据结构》第一周学习总结

    2018下半年学习总结博客总目录:第一周 教材学习内容总结 第一章 概述 1.软件质量 软件工程(Software Engineering)是一门关于高质量软件开发的技术和理论的学科. 软件质量从以下 ...

  6. 20172308《Java软件结构与数据结构》第一周学习总结

    教材学习内容总结 第 1 章 概述 软件质量的特征:正确性.可靠性.健壮性.可用性.可维护性.可重用性(别人写的组件自己可以拿过来用).可移植性.运行效率 数据结构:计算机存储.组织数据的方式 程序 ...

  7. 20172329 2018-2019《Java软件结构与数据结构》第一周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第一周学习总结 在这学期就已经大二了,也已经步入了学习专业课的核心时间,在这个阶段,我们应该了解自己的学习情况,针对自己 ...

  8. 20172305 2018-2019-1 《Java软件结构与数据结构》第一周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第一周学习总结 教材学习内容总结 本周内容主要为书第一章和第二章的内容: 第一章 软件质量: 正确性(软件达到特定需 ...

  9. 在Eclipse中调用weka包实现分类

    1.如题. 最近写了一个FCM的聚类算法,希望能够可视化结果,因此一个想法是调用weka中的包,使自己的程序可以可视化.这里参考了网络上的方法,首先实现在Eclipse中调用weka包实现分类的功能. ...

随机推荐

  1. 201871010111-刘佳华《面向对象程序设计(java)》第一周学习总结

    <面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...

  2. Java流程控制之顺序结构

    概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序 ...

  3. 使用rsync基于ssh免密登陆进行备份或目录同步

    日常工作中有很多的备份工作,rsync是一个很不错的工具,尝试使用基于ssh免密登陆的方式进行备份,测试成功,是可行且方便的方法,撰文记之,以备后用: 1.A主机root用户对B主机root用户做ss ...

  4. Saiku使用iframe嵌入页面访问地址配置化(二十八)--DWR的基本使用

    Saiku使用iframe嵌入页面使用时ip与端口配置化(二十八)--DWR的基本使用 DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开 ...

  5. XML与DTD(够用)

    1: 概述 1.1 什么是XML 1.2 三个重点 1.3规则 1.4 常用转义 2: Xml声明 XML 中,空格会被保留 XML 以 LF 存储换行 3:Xml标签 4:Xml元素 5:XML 属 ...

  6. jenkins支持git分支发布

    https://blog.csdn.net/wc1695040842/article/details/102228804 核心就是需要安装一个Git Parameter 的插件结合使用. 如果同时有多 ...

  7. Elasticsearch Query DSL 语言介绍

    目录 0. 引言 1. 组合查询 2. 全文搜索 2.1 Match 2.2 Match Phase 2.3 Multi Match 2.4 Query String 2.5 Simple Query ...

  8. JS原生对象实现异步请求以及JQ的ajax请求四种方式

    一.JS原生方式异步请求 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="A ...

  9. JS基础语法---分支语句之:三元表达式

    获取两个数字中的最大值 用if-else语句        var num1 = 10;        var num2 = 100;        if (num1 > num2) {     ...

  10. DDL、DML、TCL

    一.DDL 1.创建表(CREATE) (1)数据库对大小写不敏感,只对字符串大小写敏感. (2)使用create关键字创建表.(-- 表示注释). 格式: CREATE TABLE 表名( 字段名1 ...