数据挖掘初试--熟悉WEka平台

实验一 熟悉weka平台

一、实验名称

WEKA的使用与数据准备

二、实验目的

熟悉数据挖掘的常用软件WEKA的安装和环境,理解weka的数据格式,掌握数据格式的转换,理解数据预处理的必要性和基本方法

三、实验平台

计算机、软件WEKAUtraEdit

四、实验数据

bank-data.csv(在服务器上有提供)

weather.arff (代码在文档中)  

五、实验方法和步骤

1、实验准备

(1)访问WEKA网站http://www.cs.waikato.ac.nz/ml/weka,下载带JAVA虚拟机版本的WEKA。(机房如果安装就不用安装)

(2)将实验所需数据bank-data.csv从服务器下载。

2、了解weka的环境

 (1)安装weka,了解weka的环境

 (2) “weather.arff”文件,了解arff文件的格式

3、数据准备

1)将原来的“bank-data.csv”文件转化为arff文件“bank-data.arff”

2)把“ID”属性去掉

3“Children”属性转换成数值型的值{0,1,2,3}

4)使用“Discretize”Filter“age”“income”的离散化,另存文件为bank_data_final.arff

六、实验指导

1. 简介

WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过http://www.cs.waikato.ac.nz/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。

WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。

 

图一  WEKA主界面

 

如果想自己实现数据挖掘算法,可以看weka的接口文档weka中集成自己的算法。 

20058月,在第11ACM SIGKDD国际会议上,怀卡托大学的Weka小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一。

2. 数据格式

跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是图2那样的一个二维的表格。

新窗口打开

表格里的一个行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。列称作一个属性Attrbute),相当于统计学中的一个变量,或数据库中的一个字段。这样一个表格(数据集),在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有14个实例,5个属性,关系名称为“weather”

WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。图1所示的二维表格存储在如下的ARFF文件中。以下是“weather.arff”文件代码

代码:

% ARFF file for the weather data with some numric features

%

@relation weather

@attribute outlook {sunny, overcast, rainy}

@attribute temperature real

@attribute humidity real

@attribute windy {TRUE, FALSE}

@attribute play {yes, no}

@data

%

% 14 instances

%

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

需要注意的是,在Windows记事本打开这个文件时,可能会因为回车符定义不一致而导致分行不正常。推荐使用UltraEdit这样的字符编辑软件察看ARFF文件的内容。识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。以“%”开始的行是注释,WEKA将忽略这些行。如果你看到的“weather.arff”文件多了或少了些“%”开始的行,是没有影响的。除去注释后,整个ARFF文件可以分为两个部分。

第一部分头信息(Head information),包括了对关系的声明和对属性的声明。

第二部分数据信息(Data information),即数据集中给出的数据。从“@data”标记开始,后面的是数据信息。

(1)关系声明

关系名称在ARFF文件的第一个有效行来定义,格式为

@relation

是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。

(2)属性声明 

属性声明用一列以“@attribute”开头的语句表示。数据集中的每一个属性都有它对应的“@attribute”语句,来定义它的属性名称和数据类型。

这些声明语句的顺序很重要。首先它表明了该项属性在数据部分的位置。例如,“humidity”是第三个被声明的属性,这说明数据部分那些被逗号分开的列中,第三列数据 85 90 86 96 ... 是相应的“humidity”值。其次,最后一个声明的属性被称作class属性,在分类或回归任务中,它是默认的目标变量。属性声明的格式为

@attribute

其中是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。

WEKA支持的有四种,分别是

numeric-------------------------数值型

-----分类(nominal)型

string----------------------------字符串型

date []--------日期和时间型

其中 将在下面说明。还可以使用两个类型“integer”“real”,但是WEKA把它们都当作“numeric”看待。注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”“attribute ”“date”则不区分。

数值属性

数值型属性可以是整数或者实数,但WEKA把它们都当作实数看待。

分类属性

分类属性由列出一系列可能的类别名称并放在花括号中:{, , , ...}。数据集中该属性的值只能是其中一种类别。

例如如下的属性声明说明“outlook”属性有三种类别:“sunny”“ overcast”“rainy”。而数据集中每个实例对应的“outlook”值必是这三者之一。

@attribute outlook {sunny, overcast, rainy}

如果类别名称带有空格,仍需要将之放入引号中。

字符串属性

字符串属性中可以包含任意的文本。这种类型的属性在文本挖掘中非常有用

示例: @ATTRIBUTE LCC string

日期和时间属性

日期和时间属性统一用“date”类型表示,它的格式是

@attribute date []

其中是这个属性的名称,是一个字符串,来规定该怎样解析和显示日期或时间的格式,默认的字符串是ISO-8601所给的日期时间组合格式yyyy-MM-ddTHH:mm:ss。数据信息部分表达日期的字符串必须符合声明中规定的格式要求(下文有例子)。

(3)数据信息

数据信息中“@data”标记独占一行,剩下的是各个实例的数据。每个实例占一行。实例的各属性值用逗号“,”隔开。如果某个属性的值是缺失值(missing value),用问号“?”表示,且这个问号不能省略。例如:

@data

sunny,85,85,FALSE,no

?,78,90,?,yes

字符串属性和分类属性的值是区分大小写的。若值中含有空格,必须被引号括起来。例如:

     @relation LCCvsLCSH

    @attribute LCC string

    @attribute LCSH string

    @data

    AG5, 'Encyclopedias and dictionaries.;Twentieth century.'

    AS262, 'Science -- Soviet Union -- History.'

日期属性的值必须与属性声明中给定的相一致。例如:

@RELATION Timestamps

    @ATTRIBUTE timestamp DATE "yyyy-MM-dd HH:mm:ss"

    @DATA

    "2001-04-03 12:12:12"

    "2001-05-03 12:59:55"

(4)稀疏数据

有的时候数据集中含有大量的0值(比如购物篮分析),这个时候用稀疏格式的数据存贮更加省空间。稀疏格式是针对数据信息中某个实例的表示而言,不需要修改ARFF文件的其它部分。看如下的数据:

@data

    0, X, 0, Y, "class A"

    0, 0, W, 0, "class B"

用稀疏格式表达的话就是

@data

    {1 X, 3 Y, 4 "class A"}

    {2 W, 4 "class B"}

每个实例用花括号括起来。实例中每一个非0的属性值用 <空格> 表示。是属性的序号,从0开始计;是属性值。属性值之间仍用逗号隔开。

注意在稀疏格式中没有注明的属性值不是缺失值,而是0值。若要表示缺失值必须显式的用问号表示出来。

3xls,cvs,arff数据格式转化

 实际工程中数据常以各种各样的格式存储和加工,如Excelxls文件,记事本文件,CSV文件。(CSV逗号分隔值文件(Comma Separated value),是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件。 )WEKA默认的存储数据的格式是ARFF,因此有必要了解其他格式的文件是如何转换为ARFF文件,以方便在weka中处理。

UltraEdit打开bank-data.csv可以看到,这种格式也是一种逗号分割数据的文本文件,储存了一个二维表格。

 

3 使用UltraEdit打开bank-data.csv

(1)Excelxls转化为CSV

ExcelXLS文件可以让多个二维表格放到不同的工作表(Sheet)中,只能把每个工作表存成不同的CSV文件。打开一个XLS文件并切换到需要转换的工作表,另存为CSV类型,点确定忽略提示即可完成XLS转化为CSV格式的操作。

 (2)使用“Arff Viewer”模块完成CSV文件转为Arff文件

WEKA 3.5中提供了一个“Arff Viewer”模块,可以用它打开一个CSV文件将进行浏览,然后另存为ARFF文件。

 

4 Arff Viewer”模块

 

4 Arff Viewer”模块选择文件类型

进入“Exploer”模块,从上方的按钮中打开CSV文件然后另存为ARFF文件。

5.1数据集属性的选择

通常对于数据挖掘任务来说,ID这样的信息是无用的,我们将之删除。在区域5勾选属性“id”,并点击“Remove”。将新的数据集保存一次,并用UltraEdit打开这个ARFF文件。我们发现,在属性声明部分,WEKA已经为每个属性选好了合适的类型。

5.2数值数据属性的离散化处理

有些算法,只能处理所有的属性都是分类型的情况。这时候就需要对数值型的属性进行离散化。

bank-data数据集中有3个变量是数值型的,分别是“age”“income”“children”。 其中“children”只有4个取值:0123。这时我们在UltraEdit中直接修改ARFF文件,把   @attribute children numeric

改为    @attribute children {0,1,2,3} 就可以了。

“Explorer”中重新打开“bank-data.arff”,看看选中“children”属性后,区域6那里显示的“Type”是不是变成“Nominal”了?

“age”“income”的离散化我们需要借助WEKA中名为“Discretize”Filter来完成。在区域2中点“Choose”,出现一棵“Filter,逐级找到“weka.filters.unsupervised.attribute.Discretize”,点击。若无法关闭这个树,在树之外的地方点击“Explorer”面板即可。

 

现在“Choose”旁边的文本框应该显示“Discretize -B 10 -M -0.1 -R first-last”。 点击这个文本框会弹出新窗口以修改离散化的参数。

 

6WEKA“Discretize”Filter离散化的参数设置

 

不打算对所有的属性离散化,只是针对对第1个和第4个属性,故把attributeIndices右边改成“1,4”。计划把这两个属性都分成3段,于是把“bins”改成“3”。其它框里不用更改,关于它们的意思可以点“More”查看。点“OK”回到“Explorer”,可以看到“age”“income”已经被离散化成分类型的属性。若想放弃离散化可以点区域2“Undo”

如果对“"(-inf-34.333333]"”这样晦涩的标识不满,可以用UltraEdit打开保存后的ARFF文件,把所有的“'\'(-inf-34.333333]\''”替换成“0_34”。其它标识做类似地手动替换。 经过上述操作得到的数据集我们保存为bank-data-final.arff

 

五、通过实验,要求同学实验中解决以下问题,并递交完整的实验报告

1、ARFF数据类型的格式如何,数据如何转换成ARFF数据类型?将转换后的文档bank-data-final.arff提交

2、为什么在数据预处理中,需要进行数据处理和分类数据的转换。

   

   3、仔细观察WEKA Explorer 的主界面,解释1~8区域的对应的含义与作用。

  4、访问如下站点,了解IBM和微软在其数据库产品中提供的数据挖掘功能。

[1] https://www.ibm.com/support/knowledgecenter/search/data%20mining

[2]http://msdn.microsoft.com/zh-cn/library/ms175595.aspx

 

最终提交要求:

一个实验报告和一个转换过的bank-data-final.arff文件,放到文件夹中压缩提交,压缩包命名为:学号+姓名


数据挖掘

1)将原来的“bank-data.csv”文件转化为arff文件“bank-data.arff”

步骤一:用weka打开“bank-data.csv”准备转换

 

步骤二:另存为转换成bank-data-.arff文件

 

2)把“ID”属性去掉

 

3“Children”属性转换成数值型的值{0,1,2,3}

步骤一:将上步骤中的文件重新命名为bank-data-id.arff,并用记事本打开

 

更改前

 

更改后

 

步骤二:在“Explorer”中重新打开“bank-data.arff”,看看选中“children”属性后,区域6那里显示的“Type” 变成“Nominal”,如下图可见

 

 

 

4)使用“Discretize”Filter“age”“income”的离散化,另存文件为bank_data_final.arff

在区域2中点“Choose”逐级找到“Discretize -B 10 -M -0.1 -R first-last”文件。

 

 

离散化改成12段

 

Age更改后

 

Income更改后

 

最后保存文件为bank_data_final0236.arff

 

 

你可能感兴趣的:(数据挖掘初试--熟悉WEka平台)