1、前言

weka 数据预处理阶段全部在 filter 上:

下面把一些常见的机器学习数据与处理方法处理说一下(下面所有实例都是在 Explorer 模块上进行的)。

2、数据预处理方法

可以看到其 filters 可以分为五类,重点是画红框的部分:supervised 是有监督的,unsupervised 是无监督的;每一种往下分,又分为基于 attribute(属性列)和 instance(实例),基于属性列是按照列来进行操作的,基于实例是按照数据行进行操作的。

2.1 常见机器学习预处理方法

常见的机器学习预处理方法一般有缺失值处理、标准化、规范化、正则化和离散化,下面针对这几项一一记录一下。

2.1.1 缺失值处理

缺失值处理函数:weka.filters.unsupervised.attribute.ReplaceMissingValues,按照顺序可以在 filters 中找到,具体如下图:

其参数如下:

三个参数重点在 ignoreClass 上,这个是判断是否要对标签进行缺失值处理的参数。

实例

加载 weka 自带数据集:weather.nominal.arff,将其两个属性外加标签(默认最后一列为标签)编辑(在菜单中寻找 Edit…)为缺失值:

对其进行缺失值处理(使用默认参数):

可以看到,第 2 和 3 列属性缺失值都被填充完毕,而第 5 列则没有,这是为什么呢,来看一下官方解释:

Replaces all missing values for nominal and numeric attributes in a dataset with the modes and means from the training data. The class attribute is skipped by default.

翻译过来:是使用均值(数值型)和模式(我认为对于非数值则是数量最多的属性值填充)填充缺失值,默认跳过标签列(其中 ignoreClass 参数默认为 False)。

OK 了,将 ignoreClass 设置为 True,再进行一下缺失值处理:

2.1.2 标准化(standardize)

weka 中的类:weka.filters.unsupervised.attribute.Standardize

标准化给定数据集中所有数值属性的值到一个 0 均值和单位方差的正态分布。根据类包依赖顺序,在 filters 中找到其位置,查看一下参数:

和缺失值处理参数一样,不再细说。

实例

加载 weka 自带数据集:cpu.arff,处理之前原数据(参数为默认,一般标签数据是不会被标准化的):

处理之后:

2.1.3 规范化(normalize)

规范化所在类:weka.filters.unsupervised.attribute.Normalize。

数据规范化,可以将所有数据通过数据变换,转换到指定范围内。来看一下其参数:

除了 ignoreClass,重要参数为 scale 和 translation,这两个参数指定了转换范围,转换公式为:[translation,translation+scale]。比如,scale=2,translation 为-1,那么转换后的数据范围为:[-1,1]

需要注意的是:无论是规范化还是标准化都是以列为单位。

实例

加载 weka 自带数据集:cpu.arff,处理前数据集为:

规范化处理之后(默认参数):

2.1.4 离散化处理(discretize)

离散化所在类:weka.filters.supervised.attribute.Discretize 和 weka.filters.unsupervised.attribute.Discretize

分别是监督和无监督的数值属性的离散化,用来离散数据集中的一些数值属性到分类属性。

无监督离散化处理参数:

这里参数比较多,简要叙述一下:

  • attributeIndices:属性索引,指定要执行的属性的范围,默认参数为“first-last”,表示所有列中离散列都会被选中,如果只是想选择某一列,直接输入数字即可,多列用逗号隔开。
  • binRangePrecision:在生成 bin 标签时用于切割点的小数位数;
  • bins:分段数,离散化后会将连续数据分为多段;
  • debug:调试,如果设置为真,过滤器可以输出附加信息到控制台
  • desiredWeightOfInstancesPerInterval:在每个间隔中等频绑定设置所需的实例权重
  • doNotCheckCapabilities:如果设置为 true,则过滤器的功能在构建之前不会被检查(小心使用,以减少运行时间)
  • findNumBins:使用 leave-one-out 优化等宽容器的数量,不适合于等频
  • ignoreClass:是否忽略类标签索引
  • invertSelection:反向选择,设置属性选择模式,如果是 false 则在范围内仅选择数值属性离散,如果是 true 则只有非选择的属性将被离散化
  • makeBinary:生成二进制属性
  • spreadAttributeWeight:生成二进制属性时,将旧属性的权重分散到新属性中。 不要为每个新属性赋予旧的权重。
  • useBinNumbers:使用 bin 编号(如 BXofY),而不是使用范围
  • useEqualFrequency:等频离散化,如果设置为真,则将使用等频而不是等宽

上面标黑的是需要注意的参数。

实例

加载 weka 自带数据集 weather.numeric.arff,原数据如下:

可以看到其连续属性只有两列,下面修改参数如下:

只修改了一项 bins,将其改为了 3,其他都是默认项,看一下离散化结果:

可以看到,两列连续性数据已经被离散化了(注意 attributeIndices 参数为所有,但是离散化只会选择连续性数据列),而且离散结果是 3 个——对应 bins

通过这个结果,可以看到离散化原理就是将连续数据分段,以分段范围定义为离散属性值,而连续值在哪个分段内就赋予那个分段范围值,比如 72,在 71-78 内,则其离散化后就成了 71-78。

我们更改一下 useBinNumbers 参数,再运行一遍(注意要加载原数据,当前数据已经不存在连续属性列,即便更参数运行,当前数据集也不会再发生变化):

可以看到其更改了名称,但是本质还是一样的,这个有一点不好的就是两列离散值是重复的,都是 B1of3,B2of3 和 B3of3。

OK,今天就到这里,更多精彩内容关注我的个人网站:蓝亚之舟博客。

学习weka(7):weka数据预处理方法相关推荐

  1. sklearn中的数据预处理方法学习汇总

    文章目录 sklearn中的数据预处理方法学习 一.标准化 Z-score标准化 Z-score标准化学习 Z-score标准化实现 Min-max标准化 MaxAbs标准化 二.非线性转换 映射到均 ...

  2. 数据挖掘导论 复习一(介绍+数据预处理方法+定性归纳)

    数据挖掘=数据库+机器学习 算法 经验 模型 机器学习任务:分类.回归.聚类(KMeans.DCSAN.层次聚类).数据降维.数据预处理 常用分类器:KNN.贝叶斯. 逻辑回归 .决策树.随机森林 本 ...

  3. Scikit-learn学习系列 | 2. sklearn数据预处理的相关方法

    如有错误,恳请指出. 以下内容整理自专栏:博主"文火冰糖的硅基工坊"的专栏--机器学习与scikit-learn,对部分的文章的简化与整理. 文章目录 1. 数据预处理介绍 2. ...

  4. 大数据预处理方法,来看看你知道几个

    大数据蕴含巨大价值,引起了社会各界的高度关注.大数据的来源多种多样,从现实世界中采集的数据大体上都是不完整.不一致的脏数据,无法直接进行数据挖掘和分析,或分析挖掘的结果差强人意.为了提高数据分析挖掘的 ...

  5. python数据预处理的方法_python中常用的九种数据预处理方法

    python中常用的九种预处理方法分享 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardizat ...

  6. 【点云预处理】N种点云数据数据预处理方法 — 持续总结和更新(二)

    1~10种点云预处理方法请参考:10种点云数据数据预处理方法 - 持续总结和更新(一)_Coding的叶子的博客-CSDN博客_点云预处理.深度学习中点云基本数据处理和增强方式,包括点云归一化.随机打 ...

  7. python常用的数据预处理方法

    2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://2hwp.com/2016/02/03/data-preprocessing/ 常见的数据预处理方法,以 ...

  8. AI识虫:林业病虫害数据集和数据预处理方法

    林业病虫害数据集和数据预处理方法 林业病虫害数据集和数据预处理 读取AI识虫数据集标注信息 数据读取和预处理 数据读取 使用百度与林业大学合作开发的林业病虫害防治项目中用到昆虫数据集.在这一小节中将为 ...

  9. sklearn中常用的数据预处理方法

    常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal and Variance Scali ...

最新文章

  1. 患者痛不欲生,但AI说:别给她开止疼药
  2. Java长存!12个Java长久占居主要地位的原因
  3. 克服浮躁_设计思维:您克服并赢得低迷的最终工具。
  4. java面试题40 当编译并运行下面程序时会发生什么结果()
  5. 开源项目:浏览器前进后退发现请求了接口,也有数据返回,但是前端并没有渲染数据是什么问题?
  6. online_judge_1478
  7. 苹果cms视频模板源码
  8. 25.构造ICMP数据包
  9. photoshop cs3 调色教程 让夏天成秋天
  10. iPaaS 重新定义集成 - 开篇
  11. 130个资源网站,总有一个你用得着
  12. Android结课大作业报告
  13. idea中数据库可视化
  14. 很佩服的一个Google大佬,离职了。。
  15. JS 手机浏览器唤醒手机QQ
  16. seatunnel 架构
  17. C语言关于指针P、*P、P三者的区别
  18. matlab如何提取某一列的数据_MATLAB如何提取某一矩阵的某一列的部分数据?
  19. 小米AI 连接智能生活
  20. 前端页面性能优化(完整归纳版)

热门文章

  1. 苹果的MACBOOK AIR (MBA)与SONY VAIO PRO 11/13之间
  2. 高并发下秒杀促销活动,你必须知道的9个细节
  3. 使用matplotlib给女朋友画一个爱心吧,这份满满的爱意,一定要记得收下
  4. python1~10阶乘_python阶乘怎么写
  5. 微信小程序搞起来!!!
  6. PoS淘金热潮,全节点对于分布式网络到底意味着什么?
  7. 假蜜蜂怎么鉴别?如何鉴定蜂蜜的好坏?
  8. 基于证据理论物联网安全态势感知方法研究
  9. java毕业设计城市智能公交系统Mybatis+系统+数据库+调试部署
  10. 【内推】字节跳动-头条番茄小说客户端