http://blog.csdn.net/u011274209/article/details/51996753

Weka:

Weka的分类器,都放在以weka.classifiers为开头的包里。并根据其功能进行分门别类,具体见其方法。Weka里的核心类,放在了weka.core为开头的包里。

对于Weka的数据,存在了Instances里。然后每一条数据,则是接口Instrance的实例(有s和没有s的区分,很好理解)。该接口有一些不一样的实现,可以根据实际情况使用。通常使用arff文件,按照一定的格式进行使用,官网都有例子,这里不赘述。使用enumerateAttributes()对数据集的特征进行迭代,也可以使用enumerateInstances()对数据集的每一条数据集进行迭代。函数remove可以删掉某一个特征,函数renameAttribute对特征重新命名。

对于每一条数据Instance,都有其特征,用类Attribute表示(特别的,对于该数据的Instances,特征也是一样的)。实例里的特征集合,用ArrayList<Attribute>进行表示,这样就拥有顺序,也就是有个自己的序号。对于数据特征的获取,可以通过其名字,也可以通过其序号进行选取。(从另一个侧面说,在Weka里,特征名是唯一的)。取出特征,我们也可以得到该特征的数据集合。特征有numeric,nominal,string,date,relational,5种类型。一般用得最多的是第一种numeric,也就是数值;对于文本处理,用的是string类型。

Weka里提供了一个强大的工具,叫做filter。我们可以利用这个工具,对数据集进行筛选和处理。分别是有监督和无监督两类,筛选方法包括对特征进行筛选或者对实例进行筛选,总共4种,根据自己所需进行使用。使用方法一般如下:

xxxFilter filter = new xxxFilter();
filter.setA(some);
filter.setB(some2);
Instances newData = Filter.useFilter(oldData,filter);

这样数据就按照我们要的进行整理了。 Weka和sklearn一样,都提供了一些诸如切割训练集和测试集的方法。

Mulan:

Mulan是依托着Weka所做的一个多标签分类的类库。和Weka一样,其做法是,把标签也看成是一个特征,其类别是Weka里面的nominal类型,也就是一个字符串的集合(如:@ATTRIBUTE class   {Iris-setosa,Iris-versicolor,Iris-virginica})。但是有所区别的是,Weka的标签可以是好多类别,类别的也可以不同命名。而Mulan的标签只能是0和1(如:@attribute label {0, 1})。输入格式有两种arff和xml,具体也是见官网。

Mulan的核心类,主要是放在了mulan.data里。和Weka一样,数据集使用类Instances表示,在Mulan里,叫做MultiLabelInstances。getDataSet()获取数据里除了标签以外的其他数据(也就是特征所对应的数据),返回一个Weka的Instances实例。getFeatureAttributes() 获取其数据的标签集合。

相比于Weka,Mulan多了一个叫做label的东西,在接口LabelsMetaData里声明了,Mulan把标签和特征区分对待(尽管二者也是不能重名)。

Mulan是一个多标签的分类库,也就是分类,其算法,主要是集中在mulan.classifier.*这里。在mulan.classifier这个包里,有几个东西值得看一看。MultiLabelOutput类,是训练后的学习器,对每一条实例进行分类,然后得到的结果,包括了几个点:标签的二分(也就是打不打该标签),标签的评分,标签的排序。获取到这些,我们就可以自己构建一个结果。类MultiLabelLearnerBase是接口MultiLabelLearner的实现。使用方法,很简单

xxxClassifier learner = new xxxClassifier();
learner.build(mlTrain);
for (int instanceIndex = 0; instanceIndex < numInstances; instanceIndex++) {Instance instance = testData.instance(instanceIndex);Instance labelsMissing = (Instance) instance.copy();labelsMissing.setDataset(instance.dataset());for (int i = 0; i < mlTest.getNumLabels(); i++) {labelsMissing.setMissing(mlTest.getLabelIndices()[i]);}MultiLabelOutput output = learner.makePrediction(labelsMissing);}

利用学习器的方法,makePrediction,可以对每一条数据进行多标签分类,从而达到我们要的效果。

Weka和Mulan的介绍和理解相关推荐

  1. 设计模式---观察者模式介绍与理解

    设计模式---观察者模式介绍与理解: 观察者模式原理:类似于定牛奶业务 1. 奶站,subject:登记注册,移除,通知(register,remove,notify) 2. 用户,observer: ...

  2. Hadoop MapReduce Job 相关参数设置 概念介绍与理解

    Hadoop MapReduce  Job 相关参数设置 概念介绍与理解 InputFormat: 作用:将输入的文件分成 一个个split,并且将split 拆分成一个个<key,value& ...

  3. 面试旧敌之红黑树(直白介绍深入理解)

    2019独角兽企业重金招聘Python工程师标准>>> 读完本文你将了解到: 什么是红黑树 黑色高度 红黑树的 5 个特性 红黑树的左旋右旋 指定节点 x 的左旋 右图转成左图 指定 ...

  4. linux文件未识别,linux的内核文件vmlinuz介绍-深入理解Linux重定向的使用-网卡eth0,未识别的端口的解决方法_169IT.COM...

    介绍:Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作. Linu ...

  5. FD.io VPP基本介绍:理解向量包处理(VPP)

    FD.io VPP:用户文档 向量包处理器 RToax 2020年9月 1. 什么是向量包处理器(VPP) FD.io的矢量包处理器(VPP)是一个快速,可扩展的2-4层多平台网络协议栈.它在Linu ...

  6. 数据、数据元素、数据项、数据对象的介绍和理解

    最近在读<大话数据结构>这本书 第一章上面的介绍数据结构相关概念 总结如下图: 数据结构是相互之间存在一种或多种特定关系的数据元素的集合. 对于数据 数据对象 数据元素 数据项 这四个概念 ...

  7. ChatGPT介绍与理解

    一 chatgpt官网介绍 OpenAI的使命是确保通用人工智能(AGI)造福全人类,并致力于开发可以在多个领域解决广泛问题的高级AI工具.我们开发的AI模型之一是GPT,它是一种能够生成人类语言的强 ...

  8. css布局margin介绍,深入理解css中的margin属性(推荐)

    之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些"坑"的,下面我会介绍margin的基本知识以及那些" ...

  9. python3基础语法-Python3的一些基础语法介绍和理解

    作者:心叶 时间:2018-04-23 22:18 此处长期维护一些对帮助快速使用python3的一些基础语法,方便日常算法练习使用. 控制语法 break 语句可以跳出 for 和 while 的循 ...

最新文章

  1. 删除目录下的特定命名的图片,获取特定名称图片的路径
  2. dockerfile构建nginx服务
  3. win7 桌面右下角音量图标消失的解决办法 参考
  4. P8208-[THUPC2022 初赛]骰子旅行【dp】
  5. python部落稿酬_Python之父考虑重构Python解释器
  6. Java描述设计模式(04):抽象工厂模式
  7. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述
  8. POJ - 1182(种类并查集)
  9. 第五章 调优案列分析与实战(待续)
  10. 深入浅出mysql 出版社_深入浅出mysql
  11. SVN创建分支与合并
  12. Java批量下载有道单词发音+与Anki卡片整合
  13. android虚拟机启动失败
  14. python长整型怎么用_长整型 python
  15. 你不是真正的快乐---纪念即将完结的青春和陪伴我的阿星和星仔和星爷
  16. 笔记:基于freeradius 3.0的wifi认证
  17. 如何去除word中的空行
  18. 虚拟主机的构建——基于域名、端口、IP
  19. Arduino入门教程
  20. java为什么要用反射_Java中为什么需要反射?反射要解决什么问题?

热门文章

  1. MongoDB+集成SpringBoot+索引+并发优化 - 基于《MongoDB进阶与实战:唐卓章》
  2. 怎样可以通过网络赚钱,网络赚钱无非这3种方式!
  3. [MFC] MFC音乐播放器 傻瓜级教程 网络 搜索歌曲 下载
  4. word的试题排版插件
  5. 视频教程-SSM后台管理系统开发实战-Java
  6. TortoiseGit学习系列之TortoiseGit基本操作将提交到本地的项目推送到在线仓库(图文详解)...
  7. 7135制作自动量程电压切换_基于ICL7135和89S52单片机的数字电压表
  8. CAD菜单栏不见了怎么办,怎么调出来?
  9. 农业土壤检测服务发展前景预测报告-
  10. 炼丹侠必知的11大神经网络结构​汇总