Weka数据预处理(一)

对于数据挖掘而言,我们往往仅关注实质性的挖掘算法,如分类、聚类、关联规则等,而忽视待挖掘数据的质量,但是高质量的数据才能产生高质量的挖掘结果,否则只有"Garbage in garbage out"了。保证待数据数据质量的重要一步就是数据预处理(Data Pre-Processing),在实际操作中,数据准备阶段往往能占用整个挖掘过程6~8成的时间。本文就weka工具中的数据预处理方法作一下介绍。

Weka 主要支持一种ARFF格式的数据,含有很多数据过滤方法。关于ARFF格式文件,可以在此处了解详情。

Weka的数据预处理又叫数据过滤,他们可以在weka.filters中找到。根据过滤算法的性质,可以分为有监督的(SupervisedFilter)和无监督的(UnsupervisedFilter)。对于前者,过滤器需要设置一个类属性,要考虑数据集中类的属性及其分布,以确定最佳的容器的数量和规模;而后者类的属性可以不存在。同时,这些过滤算法又可归结为基于属性的(attribute)和基于实例的(instance)。基于属性的方法主要是用于处理列,例如,添加或删除列;而基于实例的方法主要是用于处理行,例如,添加或删除行。

数据过滤主要解决以下问题(老生常谈的):

数据的缺失值处理、标准化、规范化和离散化处理。

数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues。对于数值属性,用平均值代替缺失值,对于nominal属性,用它的mode(出现最多的值)来代替缺失值。

标准化(standardize):类weka.filters.unsupervised.attribute.Standardize。标准化给定数据集中所有数值属性的值到一个0均值和单位方差的正态分布。

规范化(Nomalize):类weka.filters.unsupervised.attribute.Normalize。规范化给定数据集中的所有数值属性值,类属性除外。结果值默认在区间[0,1],但是利用缩放和平移参数,我们能将数值属性值规范到任何区间。如:但scale=2.0,translation=-1.0时,你能将属性值规范到区间[-1,+1]。

离散化(discretize):类weka.filters.supervised.attribute.Discretizeweka.filters.unsupervised.attribute.Discretize。分别进行监督和无监督的数值属性的离散化,用来离散数据集中的一些数值属性到分类属性。

下文将详细介绍一下Weka数据过滤类。

Weka数据预处理(二)

首先来看一下,有关属性—有监督过滤器。

AddClassification

该过滤器使用给定的分类器对原始数据添加分类标签,并给出类的分布以及关于原始数据集的错误分类标记。

其实就是利用分类算法对原始数据集进行预分类,其结果与在classify阶段得到的结果基本一致,同样包括分类的正确率等信息。

AttributeSelection

该过滤器,用于进行属性选择。根据给定的挖掘任务,利用合适的评估器,选择最有利于当前挖掘任务的属性。

ClassOrder

该过滤器用于改变的数据对象顺序,适用于binary对象和nominal对象。

Discretize

离散化过滤器,用于将连续属性离散化。使用频率非常高的一个过滤器,在实际应用当中,离散化也是很常见的数据预处理步骤。

NorminalToBinary

标称值转化为二分值。举个例子吧,看官请看下图,一目了然。

Nominal value

Binary value

下面谈到的是实例—有监督过滤器

Resample

让人又爱又恨的抽样过滤器。利用放回或者不放回方法抽取特定大小的随机样本。

抽样方法有很多种,基于水库的、链式抽样、分层抽样等等。

SMOTE

同样是抽样过滤器,叫综合少数过采样技术。他要求被采样的原始数据集必须全部存储在内存中。详细内容可以参考Synthetic Minority Over-sampling Technique

SpreadSubsamp

该分类器需要得知类标是属性中的哪一个.当获得了类标之后,他会计算出类标属性的分布,同时,按照参数M,指定类标分布的最大差距,比如当给出参数W时,调整数据实例的权重。

注意,M参数设定值为l时,那么就认为是均匀分布,当设定为0的时候,那么不进行类标分布的拓展(SPread);如果设定大于l,那么这个值就表示了分布最大的类标属性(类标属性最为常见的值)和分布最小的属性(类标属性最为稀少的值)的分布的比例。

StratfiedRemoveFold

该过滤器简单的使用n重交叉验证的方法,将数据集进行分割,并返回按照参数指定的子集。

关于无监督方法的过滤器,可以参考:http://www.cnblogs.com/htynkn/archive/2012/04/02/weka_3.html

参考:

http://www.pluscn.net/?p=1394

http://www.pluscn.net/?p=1400

输入数据与ARFF文件--数据挖掘学习和weka使用(二)

数据预处理和weka.filters的使用--数据挖掘学习和weka使用(三)

weka数据预处理的更多相关文章

  1. WEKA中的数据预处理

    数据预处理包括数据的缺失值处理.标准化.规范化和离散化处理. 数据的缺失值处理:weka.filters.unsupervised.attribute.ReplaceMissingValues. 对于 ...

  2. 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率

    原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...

  3. R语言进行数据预处理wranging

    R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with R packages:tidyr dplyr Ground rules ...

  4. Scikit-Learn模块学习笔记——数据预处理模块preprocessing

    preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到 pipeline 过程中. 数据标准化 标准化预处理函数: preprocessing.scale(X, ...

  5. Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

    理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...

  6. R语言--数据预处理

    一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date(), date( ...

  7. 对数据预处理的一点理解[ZZ]

    数据预处理没有统一的标准,只能说是根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择相关的数据预处理技术,一般会用到多种预处理技术,而且对每种处理之后的效果做些分析对比,这里面经 ...

  8. Python数据预处理—归一化,标准化,正则化

    关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常用的 ...

  9. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

随机推荐

  1. mysql查询所有字段(*),并且联表时需要特别注意的地方

    如果不标明*是读取哪个表,确实会将所有三个表都读出来.需要小心

  2. 推荐!国外程序员整理的 PHP 资源大全

    推荐!国外程序员整理的 PHP 资源大全 2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论· php 分享到:0 与<YII框架>不得不说的故事—安全篇 R ...

  3. PHP文件操作 之统计目录大小

    <?php //定义一个函数 统计目录大小函数 function dirSize($dirName) { //判断目录是否存在 if (!file_exists($dirName)) { die ...

  4. BundleConfig 的使用 通配符

    //是不是说一定要是前缀文件呢 OK 通过 通配符只能使用在前缀或后缀 //捆绑名称 bundles.Add(new StyleBundle("~/caijinhao/caijinhao&q ...

  5. Memcache技术分享:介绍、使用、存储、算法、优化、命中率

    1.memcached 介绍 1.1 memcached 是什么? memcached 是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发 ...

  6. ASP.NET WebForm与ASP.NET MVC的不同点

    ASP.NET WebForm ASP.NET MVC ASP.NET Web Form 遵循传统的事件驱动开发模型 ASP.NET MVC是轻量级的遵循MVC模式的请求处理响应的基本开发模型 ASP ...

  7. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  8. 读书笔记——《图解TCP/IP》(1/4)

    读书笔记——<图解TCP/IP>(1/4) 经典摘抄 第一章 网络基础知识 1.独立模式:计算机未连接到网络,各自独立使用的方式. 2.广域网 WAN 局域网 LAN 城域网 MAN 3. ...

  9. Redis-分布式

    package test.jedis; import java.util.HashSet; import java.util.Set; import org.junit.Test; import re ...

  10. Visual Mingw

    Visual-MinGW 是一个专门为MinGW所设计的IDE.如果,你曾经用过VC++ 6.0这个IDE,你的第一感觉就是,Visual-MinGW和VC++ 6.0非常相似.所以,对于曾经用惯VC ...