Hello, Weka

2023-05-16

转自http://dreamhead.blogbus.com/logs/16813833.html

Weka,是一个用Java编写的数据挖掘软件。数据挖掘,从字面上来看,它是一个从数据中找寻有用信息的过程,不过,它涉及的内容很多,所以,这里借用“分类”这一面来说事。
分类,从名称上来看,再简单不过了,给你一样东西,给它分个类。你如何知道怎么分类呢?显然,这是基于你已有的经验。对于计算机而言,这种经验从何而来呢?只有让人来告诉它,也就是说,我们要拿一批数据训练计算机,经过训练的计算机,便具备了一定的识别能力,就可以完成一些简单的分类工作。现实中,可以用到分类的机会有很多,比如我之前,曾经参与过的一个项目就是用这种方法来做车辆的识别。
下面便是一段使用Weka完成一段分类程序。
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayesMultinomial;
import weka.core.Attribute;
import weka.core.FastVector;
import weka.core.Instance;
import weka.core.Instances;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.StringToWordVector;
public class Main {
  private static final String GOOD = "G";
  private static final String BAD = "B";
  private static final String CATEGORY = "category";
  private static final String TEXT = "text";
  private static final int INIT_CAPACITY = 100;
  private static final String[][] TRAINING_DATA = {
    {"Good", GOOD},
    {"Wonderful", GOOD},
    {"Cool", GOOD},
    {"Bad", BAD},
    {"Disaster", BAD},
    {"Terrible", BAD}
  };
  private static final String TEST_DATA = "Good";
  private static Filter filter = new StringToWordVector();
  private static Classifier classifier = new NaiveBayesMultinomial();
  public static void main(String[] args) throws Exception {
    FastVector categories = new FastVector();
    categories.addElement(GOOD);
    categories.addElement(BAD);
    FastVector attributes = new FastVector();
    attributes.addElement(new Attribute(TEXT, (FastVector)null));
    attributes.addElement(new Attribute(CATEGORY, categories));
    Instances instances = new Instances("Weka", attributes, INIT_CAPACITY);
    instances.setClassIndex(instances.numAttributes() - 1);
    for (String[] pair : TRAINING_DATA) {
      String text = pair[0];
      String category = pair[1];
      Instance instance = createInstanceByText(instances, text);
      instance.setClassValue(category);
      instances.add(instance);
    }
    filter.setInputFormat(instances);
    Instances filteredInstances = Filter.useFilter(instances, filter);
    classifier.buildClassifier(filteredInstances);
    // Test
    String testText = TEST_DATA;
    Instance testInstance = createTestInstance(instances.stringFreeStructure(), testText);
    double predicted = classifier.classifyInstance(testInstance);
    String category = instances.classAttribute().value((int)predicted);
    System.out.println(category);
  }
  private static Instance createInstanceByText(Instances data, String text) {
    Attribute textAtt = data.attribute(TEXT);
    int index = textAtt.addStringValue(text);
    Instance instance = new Instance(2);
    instance.setValue(textAtt, index);
    instance.setDataset(data);
    return instance;
  }
  private static Instance createTestInstance(Instances data, String text) throws Exception {
    Instance testInstance = createInstanceByText(data, text);
    filter.input(testInstance);
    return filter.output();
  }
}
这个程序分成两个大部分,前半部分用以训练分类器,后半部分则是测试这个分类器。
训练分类器,我们要做的包括,选择分类算法和准备训练数据。在Weka中,每一种分类算法都是Classifier的一个子类,这样的话,就可以在不改变其它部分的情况下,很容易的修改分类算法。
其实,稍微了解一下这方面的知识的人,都会知道,分类算法固然重要,但真正决定一个分类器本事大小的,是用以训练的数据。想要得到一个好的分类器,少不了不断调整训练数据和不断的训练。这同人类认识问题是一样的,经得多,见得广,才有更好的分辨能力。

在Weka中,用以训练的数据就是Instances,顾名思义,这是Instance的复数,显而易见,单独的一个训练数据就是Instance,而Instances这个类的存在,可以把Instance的一些公共的属性放到一起。在这里,我们可以看到,为了用文本作为训练数据,我们会把文本转换为Instance。同样,测试分类器的时候,我们也会把文本转换为一个Instance,然后再进行分类。
除此之外,这里还有一个Filter的概念,同常见的filter概念类似,它给了我们一个进行正式处理之前,对数据进行处理的机会。在这里,主要是对Instance做一些相关的变换。
当我们得到一个分类器之后,就可以利用这个分类器进行分类了,其中,最关键的代码是
    classifier.classifyInstance(testInstance);
这段代码返回的是根据分类算法计算结果得到的一个相似度,我们可以利用这个值来估计我们测试用的数据应该属于哪个分类。
从代码上来说,这段代码本身并不复杂。正如前面所说,一个好的分类器是需要让数据帮忙的。所以,换几个测试数据,你就会发现,这段代码中实现的分类器一点都不强大。如果希望它强大起来,扩展训练数据是一个必然的结果。不过,对于这篇blog而言,这不重要,因为我们只是要和Weka问个好,进一步的工作,还需要进一步的努力。

转载于:https://www.cnblogs.com/ysjxw/archive/2008/05/12/1193735.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hello, Weka 的相关文章

  • ICE C++ Hello World

    ICE C 43 43 Hello World实例教程 1 概述 本文演示了如何编写一个最简单的C 43 43 ICE Internet Communications Engine 应用程序 xff0c 包括必要环境的安装 该应用程序包含客
  • C++ 保姆级教程——001、书写hello world

    使用VS新建一个空项目 xff0c 书写hello world 1 打开软件 xff0c 选怎文件 2 点击选择Visual C 43 43 下的空项目 xff0c 设置文件名称和保存路径 3 添加cpp源文件 xff0c 选择左侧源文件
  • 初学shell脚本之-bash: /home/test/hello.sh: Permission denied

    今天学习shell脚本在windows写了个shell脚本 span class token operator span span class token operator span bin span class token operato
  • Hello, Weka

    转自http dreamhead blogbus com logs 16813833 html Weka xff0c 是一个用Java编写的数据挖掘软件 数据挖掘 xff0c 从字面上来看 xff0c 它是一个从数据中找寻有用信息的过程 x
  • 出现insmod: can't insert 'kernel_hello.ko': invalid module format解决方法

    出现insmod can 39 t insert 39 kernel hello ko 39 invalid module format解决方法 xff1a 问题 xff1a gt ls info proc tmp apps init ro
  • 基于 MDK 创建 STM32 汇编程序:串口输出 Hello world

    目录 一 编写代码二 结果显示三 总结四 参考资料 说明 xff1a 本文在 基于 MDK 创建 STM32 汇编语言工程并分析 HEX 文件内容 的基础上用汇编程序完成一个输出 Hello world 到串口的程序 实验工具 野火串口调试
  • Hello, Weka

    转自http dreamhead blogbus com logs 16813833 html Weka xff0c 是一个用Java编写的数据挖掘软件 数据挖掘 xff0c 从字面上来看 xff0c 它是一个从数据中找寻有用信息的过程 x
  • Linux静态库与动态库示例之hello world

    Linux静态库与动态库示例之hello world 1 Linux动态库与静态库的基本概念 linux下有两种库 动态库和静态库 共享库 xff0c 二者的不同点在于代码被载入的时刻不同 静态库的代码在编译过程中已经被载入可执行程序 因此
  • stm32F103C8T6串口通信发送Hello Windows

    本文是基于STMF103C8T6 芯片及开发板 xff0c 在深入理解串口通信的原理后完成实操 xff0c 发送Hello Windows 文章目录 一 通信方式1 串行通信2 并行通信3 同步通信和异步通信 二 串口通信协议1 串口通信协
  • 具有非常大矩阵的 K 均值

    我必须在一个非常大的矩阵 大约 300 000x100 000 个值 超过 100Gb 上执行 k 均值聚类 我想知道我是否可以使用 R 软件或 weka 来执行此操作 我的计算机是一台多处理器 具有 8GB 内存和数百 GB 可用空间 我
  • Weka GUI 和 Weka 通过 Java 代码得到不同的结果

    我正在使用 NaiveBayesMultinomialText 分类器在 Weka 中应用文本分类 问题是 当我使用 GUI 来执行此操作并在相同的列车数据上进行测试 无需交叉验证 时 我获得了 93 的准确率 而当我尝试通过 java 代
  • 尽管设置了 PATH 和 CLASSPATH,但仍无法执行 jar 文件

    我的问题是关于在路径中包含 jar 文件 它有 2 个部分 1 我试图执行位于 home andy software weka weka jar 的 weka jar jar 文件 PATH 变量指向这个 jar 文件 即 home and
  • 尝试使用 Weka 将更多实例添加到训练集中时出现 IndexOutOfBoundsException

    我正在尝试向我的训练集添加更多实例并执行 10 倍交叉验证 我的实例采用字符串格式 因此我使用 StringToWordVector 过滤器将它们转换为数字 如果我不添加我想要的额外页面 事情就会顺利进行 但是当我添加命令时trainSet
  • .arff 文件与 scikit-learn 一起使用吗?

    我想用一个属性关系文件格式 http www cs waikato ac nz ml weka arff html用 scikit learn 来做一些 NLP 任务 这可能吗 如何使用 arff文件与scikit learn 我真的推荐利
  • Weka 仅将数字更改为名义

    我有一个 CSV 文件 正在导入 Weka 所有变量均以数字形式导入 我需要将其中 3 个更改为名义值 然而 当我在其上放置数字滤波器时 所有变量都会发生变化 我只想改3 1 有没有办法通过过滤器改变一些 2 或者您可以在导入时设置它 如果
  • 如何使用java获取weka中的最近邻居

    我一直在尝试使用与 weka 机器学习库一起使用的 Ibk 最近邻算法 我知道如何对实例进行分类 但我想实现协同过滤功能 因此我需要实际获取最接近感兴趣对象的实际对象列表 在 weka 中我实际上该如何使用它的 java API 来做到这一
  • 在 Weka 中对单实例进行分类

    我使用 WEKA gui 训练并创建了 J48 模型 我将模型文件保存到我的计算机上 现在我想用它对我的 Java 代码中的单个实例进行分类 我想获得对属性 簇 的预测 我所做的如下 public void classify double
  • Weka:如何在 java 中获取测试实例的预测值?

    我已经成功训练了一个分类器 bayesnet 并构建了一个测试集 ARFF 格式 该测试集有一个实例 有一个缺失值 Evaluation eTest new Evaluation trainingInstance eTest evaluat
  • 如何使用 MATLAB 从 WEKA 检索类值

    我正在尝试使用 MATLAB 和 WEKA API 从 WEKA 检索类 一切看起来都很好 但类始终为 0 有什么想法吗 我的数据集有 241 个属性 将 WEKA 应用于该数据集我得到了正确的结果 创建第一个训练和测试对象 然后构建分类器
  • 如何在 Android Studio 中使用预训练的 .model 文件进行预测?

    我在 Weka 3 8 Dekstop 版本中训练了一个决策表 ML 模型 我已将模型相应保存在资产文件夹中 并配置了 wekaSTRIPPED jar 文件 此时 构建似乎在 Android Studio 上运行良好 然而 当我尝试在 J

随机推荐

  • APM飞控修改数传模块方法

    APM飞控修改数传模块方法 硬件 ARDUCOPTER第二代数传模块 USB接口 数传模块 telem接口 usb ttl模块 修改方法 注意 xff1a APM固件版本和数传模块估计版本是分开的 xff0c 但有一定的对应关系 xff0c
  • HTTP AUTH 那些事

    谨以此文献给那些需要实现HTTP AUTH的 程序猿 们 关于HTTP AUTH的文档不多 RFC在 http www ietf org rfc rfc2617 txt wiki在 http en wikipedia org wiki Ba
  • 基于超声波的四轴定高控制简析

    笔者是来自武汉理工的小青同学 xff0c 接下来为大家讲一下基于超声波的定高问题 xff0c 鉴于笔者能力有限 xff0c 所以如有错误请多指教 xff0c 且很多仅仅是工程上的近似化应用 xff0c 没有做过仿真模拟 我讲的东西更加偏重于
  • Android 新建工程 卡在Gradle:Resolve dependencies':app:_debugCompile'

    今天更新 androidSDK 到 5 0 xff0c 发现新建工程时卡在 Gradle Resolvedependencies 39 app debugCompile 39 首先 xff0c googledevelop是访问不了的 xff
  • 数学公式

    一 泰勒公式 数学中 xff0c 泰勒公式是一个用函数在某点的信息描述其附近取值的公式 如果函数足够平滑的话 xff0c 在已知函数在某一点的各阶导数值的情况之下 xff0c 泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的
  • python内置方法和属性

    1 del 方法 作用 当使用类名 创建对象时 xff0c 为对象分配完空间后 xff0c 会自动调用 init 方法 xff0c 当对象被从内存中销毁前 xff0c del 方法会被自动调用 应用场景 xff1a init 方法可以重新设
  • Linux行人识别,0.kcf-tracker 机器人跟踪编程,基于opencv的行人检测和 ,当 发现 后自动进行 。 Linux Network 网络 276万源代码下载- www.pudn.co...

    文件名称 0 kcf tracker下载 收藏 5 4 3 2 1 开发工具 Windows Unix 文件大小 95560 KB 上传时间 2017 05 14 下载次数 0 详细说明 xff1a 机器人跟踪编程 xff0c 基于open
  • 【VirtualBox】快照

    一 快照备份 虚拟机系统快照下来 xff0c 以后就可以恢复到快照之前的系统 右上角 gt 虚拟电脑工具 gt 快照 转载于 https www cnblogs com chenxiaomeng p 9497166 html
  • TX2-start 6 CPU kernel-开启高功耗模式

    1 TX2简介 Jetson TX2是由一个GPU和一个CPU集群组成 CPU集群由双核denver2处理器和四核ARM Cortex A57组成 xff0c 通过高性能互连架构连接 拥有 xff16 个CPU核心和一个GPU xff0c
  • 生成正太随机变量

    clc clear close format long syms u v x y u1 u2 u3 u3 u x1 x2 x3 x4 x5 d L int int int int 1 x5 x4 1 x4 x3 1 x3 x2 1 x2 x
  • 【opencv基础】OpenCV installation stuck at [ 98%] Built target opencv_perf_stitching with no error...

    前言 按照官网步骤安装opencv的过程中进行到98 时一直没有继续进行 原因 后台一直在编译运行 xff0c 只需等待即可 xff0c 参考here xff1b well turns out it gets stuck for quite
  • PX4的UORB通信机制

    在Firmware的msg文件夹里面 xff0c 里面有很多 msg结尾的文件 xff0c 这些msg文件在编译的时候可以生成h头文件 xff0c 这些编译过程中生成的头文件一般是保存在build default src module uo
  • ubuntu下安装和更新R语言

    ubuntu 下安装和更新 R 语言 本文主要讲解在 ubuntu 下如何安装和更新 R 语言 将分别介绍什么是 R 语言 xff0c 简单方法安装 R 语言 xff0c 通过更新源来安装或更新 R 语言 xff0c 和安装 R 语言集成开
  • Linux 中各个文件夹的作用

    根目录 包含了几乎所的文件目录 相当于中央系统 进入的最简单方法是 xff1a cd boot 引导程序 xff0c 内核等存放的目录 这个目录 xff0c 包括了在引导过程中所必需的文件 在最开始的启动阶段 xff0c 通过引导程序将内核
  • 转:Fix Bug的五个阶段

    一个非常严重和困难的bug xff0c 能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯 经受这种考验的创伤程度 xff0c 相当你受到了一次严重的身体伤害 xff0c 离婚 xff0c 或是家庭成为的离世 研究人员在研究了计算机
  • 10.app后端选择什么开发语言

    在qq上 xff0c 经常看到有创业团队的创始人一直都招不到技术人员 xff0c 除了项目的因素外 xff0c 很大的原因就是所需要掌握的开发语言偏门 通过阅读本文 xff0c 详细了解选择开发语言的核心原则 xff0c 使各位心里对开发语
  • dell服务器系统开机提示错误解决方法

    DELL 服务器有时会若硬件的改动 xff0c 在开机以后会提示错误信息 信息一般会提示在显示器上 xff0c 以后举出如下信息的解决办法 信息 原因 纠正措施 Alert iDRAC6 not responding Rebooting i
  • 卡尔曼滤波原理

    卡尔曼滤波原理 原文链接 xff1a http www bzarg com p how a kalman filter works in pictures https blog csdn net u010720661 article det
  • 在网络直播中什么叫推流

    参考 xff1a 推流 xff0c 指的是把采集阶段封包好的内容传输到服务器的过程 其实就是将现场的视频信号传到网络的过程 推流 对网络要求比较高 xff0c 如果网络不稳定 xff0c 直播效果就会很差 xff0c 观众观看直播时就会发生
  • Hello, Weka

    转自http dreamhead blogbus com logs 16813833 html Weka xff0c 是一个用Java编写的数据挖掘软件 数据挖掘 xff0c 从字面上来看 xff0c 它是一个从数据中找寻有用信息的过程 x