数据挖掘WEKA实验报告.docx

上传人:b****4 文档编号:27063966 上传时间:2023-06-26 格式:DOCX 页数:24 大小:572.47KB
下载 相关 举报
数据挖掘WEKA实验报告.docx_第1页
第1页 / 共24页
数据挖掘WEKA实验报告.docx_第2页
第2页 / 共24页
数据挖掘WEKA实验报告.docx_第3页
第3页 / 共24页
数据挖掘WEKA实验报告.docx_第4页
第4页 / 共24页
数据挖掘WEKA实验报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据挖掘WEKA实验报告.docx

《数据挖掘WEKA实验报告.docx》由会员分享,可在线阅读,更多相关《数据挖掘WEKA实验报告.docx(24页珍藏版)》请在冰豆网上搜索。

数据挖掘WEKA实验报告.docx

数据挖掘WEKA实验报告

数据挖掘-WAKA

实验报告

、WEKA软件简介

在我所从事的证券行业中,存在着海量的信息和数据,但是这些数据日常知识发挥了一小部分的作用,其包含了大量的隐性的信息并不为所用,但是却可以为一些公司的决策和对客户的服务提供不小的价值。

因此,我们可以通过一些数据采集、数据挖掘来获得潜在的有价值的信息。

数据挖掘就是通过分析存在于数据库里的数据来解决问题。

在数据挖掘中计算机以电子化的形式存储数据,并且能自动的查询数据,通过关联规则、分类于回归、聚类分析等算法对数据进行一系列的处理,寻找和描述数据里的结构模式,进而挖掘出潜在的有用的信息。

数据挖掘就是通过分析存在于数据库里的数据来解决问题。

WEK的出现让我们把数据挖掘无需编程即可轻松搞定。

WEKA是由新西兰怀卡托大学开发的开源项目,全名是怀卡托智能分析

环境(WaikatoEnvironmentforKnowledgeAnalysis)。

WEKA是由JAVA

编写的,它的源代码可通过http:

//www.cs.waikato.ac.nz/ml/WEKA得到,

并且限制在GBU通用公众证书的条件下发布,可以运行在所有的操作系统中。

是一款免费的,非商业化的机器学习以及数据挖掘软件

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

如果想自己实现数据挖掘算法的话,可以看一看WEKA的接口文档。

在WEKA中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。

安装WEKA也十分简单,首相要下载安装JDK环境,JDK在这个页面可

以找到它的下载。

点击JDK6之后的Download按钮,转到下载页面。

选择Accepct,过一会儿页面会刷新。

我们需要的是这个WindowsOfflineInstallation,Multi-languagejdk-6-windows-i586.exe53.16MB,点击

它下载。

也可以右键点击它上面的链接,在Flashget等工具中下载。

安装它和一般软件没什么区别。

不过中间会中断一下提示你安装JRE,—并装上即可。

之后就是安装WEKA软件,这个在网上很多地方都有。

同样简单地按默认方法安装后即可使用。

点击启动运行WEKA软件后,我门发现WEKA存储数据的格式是ARFF

(Attribute-RelationFileFormat)文件,这是一种ASCII文本文件。

我们如图1通过软件的Tools菜单进入ArffViewer可以在安装目录下查看

软件自带的几个ARFF文件。

图1

如图2,打开文件后选择data自目录下的任意一张表,我们都可以看到如图3所示的二维表格存储在如下的ARFF文件中。

这也就是WEKA自带的

“contact-lenses.arff”文件。

这里我们要介绍一下WEKA中的术语。

表格

里的一个横行称作一个实例(Instanee),相当于统计学中的一个样本,或者数据库中的一条记录。

竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。

这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。

图1中一共有22个实例,5个属性,关系名称为“contact-lenses”。

除了ARFF格式,WEKA还支持另外一种常见格式,CSV格式。

CSV同样是一种二进制保存的文本格式,我们可以在WEKA中直接打开CSV格式的文件,并保存为ARFF格式。

这样就给我提供了把常见的数据格式转换为ARFF格式的

方法,如对于Excel文件,我们可以通过把每张表保存为CSV格式,进而保存为ARFF格式,与此同时,我们可以利用filter对数据进行相应的预处理。

而对于Matlab格式的数据,我们可以通过命令csvwrite把数据转化成CSV格式的文件,进而转化为ARFF格式文件。

对于海量数据,一般保存在数据库中,WEKA

同时支持JDBC访问数据库。

丁ARFF-Viewer--3-7\dat計contact-'enses.arff

EditView

:

coiktact-1eiks€s.arffJ

1oiiila■■■iia.■■■.iliic.iii#

Relation,ccrntaCflfiiiEftS

Nc

sptetacle^prescrip

astigjnft呂张

tt«r~proate

contact-lesLS

L

yaung

myap色

r*iu;*i

ft&ns

young

myope

normal

saft

13

yeuiig

myape

y^3

noTia

1■

|i

younc

myope

yss

normal

hard

5

youne

hyperraeireps

M

reduced.

inoae

Is-

young

hyperraetr口p皀

no

normal

soft

1.

hyperrietrape

yes

redniced

noite

[S

hypernetroys

yes

normal

har6

9

u.

myops

no

reduced.

nOD.9

10

pare"...

myape

no

zkormal

soft

11

pre-,..

myape

7^s

reluceel

12

pre-...

myope

yes

ivorm^

liarS

13

hyptrraitro-p*

no

reduced

eione

U

pre*...

hyp-irmetr^pe

uc

normal

soft

15

pxh…

hvpsrrietrQps:

naxte

心-.

砂E口

阳朋

L7

myop-s

r

15

FT含s・・,

IS

myope

yes

reiucei

noae

20

press,,B

myope

yes

nonnal

h.G

21

pres..t

hypernetrope

no

reduced

none

22

pTi*S:

...

h:

fp*rraetropt

no

normal

soft

23

pres...

h^erraetrope

yes

reluc*i

hors

2;

pres

hypErmeti■叩e

yes

norniri

none

1

打开WEKA,首先出现一个命令行窗口。

原以为要在这个命令行下写java

语句呢,不过稍等一秒,WEKAGUIChooser的出现了。

这是一个很简单的窗体,提供四个按钮:

SimpleCLI、Explorer、Experimenter、KnowledgeFlow。

SimpleCLI应该是一个使用命令行的界面,有点像SAS的编辑器;Explorer是则是视窗模式下的数据挖掘工具;Experimenter和KnowledgeFlow的使用有待进一步摸索

图4

(1)Explorer

使用WEKA探索数据的环境。

在这个环境中,WEKA提供了数据的预处理,数据格式的转化(从CSV格式到ARFF格式的转化),各种数据挖掘算法(包括分类与回归算法,聚类算法,关联规则等),并提供了结果的可视化工具。

对于一个数据集,通过简单的数据的预处理,并对数据挖掘算法进行选择(在WEKA3.5版本之后,加入了算法的过滤功能,可以过滤掉那些不适合当前数据集类型的算法),接着通过窗口界面对算法的参数进行配置。

可视化工具分为对数据集的可视化和对部分结果的可视化,并且我们可以通过属性选择工具(SelectAttribute),通过搜索数据集中所有属性的可能组合,找出预测效果最好的那一组属性。

Explorer是普通用户最常用的一个界面。

用户可以从ARFF文件(Weka使用的一种文本文件格式)、网页或数据库中读取数据集。

打开数据文件后,可以选择算法对数据进行预处理。

这时窗体上给出了这个数据集的一些基本特征,如含有多少属性,各属性的一些简单统计量,右下方还给出一些可视化效果图。

这些都是比较直观的分析,如果想发现隐藏在数据集背后的关系,还需要选择

Weka提供的各种分类、聚类或关联规则的算法。

所有设置完成后,点击Start按

钮,就可以安心地等待weka带来最终的结果。

哪些结果是真正有用的还要靠经验来判断。

(2)Experimenter

运行算法试验、管理算法方案之间的统计检验的环境。

Experiment环境可以让用户创建,运行,修改和分析算法试验,这也许比单独的分析各个算法更加方便。

例如,用户可创建一次试验,在一系列数据集上运行多个算法(schemes),然后分析结果以判断是否某个算法比其他算法(在统计意义下)更好。

Explorermenter主要包括简单模式,复杂模式和远程模式。

复杂模式是对简单模式的基本功能的扩充,而远程模式允许我们通过分布式的方法进行实验。

就功能模块而言,分为设置模块,运行模块和分析模块。

在设置模块中我们可以自定义实验,加入多个算法和多方的源数据(支持ARFF文件,CSV文件和数据库),在运行模块中我们可以运行我们的实验,而在分析模块中,我们可以分析各种算法的的准确性,并提供了各种统计方法对结果进行检验比较。

值得一提的是,我们可以把实验的各种参数,包括算法,数据集等,保存以方便下一次相同实验的进行;也可以把各种算法保存,方便应用在不同的数据集上;如果数据集来源于数据库的话,实验在过程中可以中止并继续(原因可以是被中止或者是扩展了实验),这样就不用重新运行那些已实验过的算法/数据集祝贺,而仅计算还没有被实验的那些。

(2)KnowledgeFlow

Explorer的一个不足在于,当用户打开一个数据集时,所有数据将全部被读入到主存当中,随着任务规模的增大,普通配置的计算机很难满足要求。

KnowledgeFlow提供了一个用于处理大型数据集的递增算法,专门处理这一问题。

这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面。

它有一个优势,就是支持增量学习(incrementallearning)。

KnowledgeFlow为WEKA提供了一个"数据流"形式的界面。

用户可以从一个工具栏中选择组件,把它们放置在面板上并按一定的顺序连接起来,这样组成一个"知识流"(knowledgeflow)来处理和分析数据。

目前,所有的WEKA分类器(classifier)、筛选器(filter)、聚类器(clusterer)、载入器(loader)、保存器(saver),以及一些其他的功能可以在KnowledgeFlow中使用。

KnowledgeFlow可以使用增量模式(incrementally)或者批量模式

(inbatches)来处理数据(Explorer只能使用批量模式)。

当然对数据进行增量学习要求分类器能够根据各实例逐个逐个的更新.现在WEKA中有五个分类器能够增量地处理数据:

NaiveBayesUpdateable,IB1,IBk,LWR(局部加权回归)<还有一个meta分类器RacedIncrementalLogitBoost可以使用任意基于回归的学习器来增量地学习离散的分类任务。

(4)SimpleCLI

提供了一个简单的命令行界面,能通过键入文本命令的方式来实现其他三个用户界面所提供的所有功能,从而可以在没有自带命令行的操作系统中直接执行WEKA命令。

使用命令行有两个好处:

一个是可以把模型保存下来,这样有新的待预测数据出现时,不用每次重新建模,直接应用保存好的模型即可。

另一个是对预测结果给出了置信度,我们可以有选择的采纳预测结果,例如,只考虑那些置信度在85%以上的结果。

二、实验案例介绍

本文用WEKA软件作为工具,结合券商的基金某一个时段交易业务数据进行分析。

实验的数据是一个交易周的基金交易业务数据。

该表含有date(日期)、

fund_code(基金代码)、fund_name(基金名称)、company_code基金公司代码)、company(基金公司名称)、business_code(业务代码)、business_name(业务名称)、shares(基金份额)、balanee资金金额)、fares(手续费)、fares_type(手续费类型)、internet_shares(网上交易基金份额)、internet_balanee(网上交易资金金额)、remark(备注)等字段,通过实验,希望能找出客户的基金交易分布情况。

该数据的数据属性如下:

date(numeric),交易发生日期;fund_code(numeric),基金代码;fund_name(character),基金名称;

company_code(numeric),用于报送的基金公司代码;

company(character),所属的基金公司;business_code(numeric),交易业务代码;business_name(character),交易业务名称;shares(numeric),基金交易份额;balance(numeric),资金交易金额;fares(numeric),交易手续费;

fares_type(enum),手续费类型,取值范围“全额结算”/“净额结算”;internet_shares(numeric),网上交易基金份额;

internet_balance(numeric),网上交易资金金额;

remark(character),备注;

三、数据分析

我们给出一个CSV文件的例子(Fund-data.csv)。

用UltraEdit打开它可以看到,这种格式也是一种逗号分割数据的文本文件,储存了一个二维

表格。

Excel的XLS文件可以让多个二维表格放到不同的工作表(Sheet)中,我们只能把每个工作表存成不同的CSV文件。

打开一个XLS文件并切换到

需要转换的工作表,另存为CSV类型,点“确定”、“是”忽略提示即可

完成操作。

需要注意的是,Matllab给出的CSV文件往往没有属性名(Excel给出的也有可能没有)。

而WEK必须从CSV文件的第一行读取属性名,否则就

会把第一行的各属性值读成变量名。

因此我们对于Matllab给出的CSV文

件需要用UltraEdit打开,手工添加一行属性名。

注意属性名的个数要跟数据属性的个数一致,仍用逗号隔开。

1、.csv->.arff

将CSV转换为ARFF最迅捷的办法是使用WEKA所带的命令行工具。

运行WEKA勺主程序,出现GUI后可以点击下方按钮进入相应的模块。

我们点击进入“SimpleCLI”模块提供的命令行功能。

由于weka暂不支持中文输入,所以挑选了在D盘下进行转换,在新窗口的最下方(上方是不

能写字的)输入框写上

javaweka.core.converters.CSVLoaderD:

/Fund-data.csv>

D:

/Fund-data.csv.arff

即可完成转换,生成文件“D:

/Fund-data.csv.arff”。

见下图5:

>javaweka.ccz?

e.converters.CSVLo>javaweta.care-conviertera.CSVLoader

D:

/Fund-data.cav>D:

/Fund-data*csv.arff

Fund-da匸曲.csv>D:

/Fund-daLa■匸冒貼■直rff

aderD:

/

java.io.F12.Elni:

ut5trear.3pen(NativieMethtzid|^ava.io+?

ilelnput5treai.(UnkncwnSource:

weta*core+convertersnAts^idctFileLoader*setSource(UnlmownSource)weka.core,converter3.CSVLcader.setsource(UnJcnownSource》

.AbstraeTFils:

Loid«.(UnImawnScarce^

nv^ertera.AbatractFilelk]ader.zrunFileLnader(UnkaawnSource|weIra.core*convertera.CSVLcader,jrain(UnknownSouccel

sun+reflectJla^iveMe'chodAcces3orIirpl*invokeO(NativeMerhodlsun.,ref1ect,NatIveHethodAcceasorIrp1*invoke(UnImownSouree)3uzi.reflect.DelegatingMethcidA.cces3itIicpl.ke{UnknownScurceh

3=vb.lang,tefleet.Method.invnke(UTiimnwnScurcej

wEJca.gmi.Siir.pl«ClIPanel$71a33Runner+run(UnknownSource)

java.ioi."ilelnputSnreait.cp-&n{HariveMethod)

java..in.Ej.1e1nputStream.

weka+core.converter^.TUbstracrFileLcader.actsourse(UntncTrfnSnurec:

■weka+cox«.converters*匚SVLobc!

昔r+se匸Souhu乜(UrUmownSource^

weka,core・converuer2,uracDfileLcadcr・aetfile(UnknownSoarce)weka.ccie.converters.AfcstraztSileLcader.runFLleLcader(Unkncnin

・c+(UnkncwnEquicu)

sun.reflect.NativeMethcdAccessarlTpl*invcJceO(NativeEethod)sun.reflect.NativsMethedAc.eeasorlunpl,invott(OnknownSource}aun・reflect;・DeL亡QaiTZLngEediDidALJC;亡日BDtTipp丄・in^ok^ftlrLkrLfjwnSourceJjava=lang.reflect.Hethcd-inveke(UntncwnSource)

weka+gu1+Sis:

pleCLIFane1JrClaaRunner

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

文件亦可。

我们应该注意到,“Exploer”还提供了很多功能,实际上可以

说这是WEK使用最多的模块。

现在我们先来熟悉它的界面,然后利用它对数据进行预处理。

界面展现见下图6:

图6

2、预处理

通常对于WEKA来说并不支持中文,所以我们将一些涉及中文的字段删

除。

勾选属性“fund_name”、“company”、“business_name”、“remark”,并点击“Removd'。

将新的数据集保存一次。

其中“fares_type”只有2个取值:

全额结算和净额结算。

这时我们在UltraEdit中直接修改ARFF文

件,把

@attributefares_type{全额结算,净额结算}

改为

@attributefares_type{Full,Net}

@attributedate{numeric}

改为

@attribut

date{2009/8/24,2009/8/25,2009/8/26,2009/8/27,2009/8/28}

就可以了。

在“Explorer”中重新打开“fund-data.arff”,选中“date”和

“fund_type”,看到属性已经变成“Nominal”了。

WEKA支持的有四种,分别是:

numeric--数值型,--分类(nominal)型,string--字符串型,date

[]--日期和时间型

而本表只有nemeric和nominal两种类型,数值属性(nemeric)数值型属性可以是整数或者实数,但WEKA把它们都当作实数看待。

分类属性(nominal)分类属性由列出一系列可能的类别名称并放在花括号中:

{,,...}。

数据集中该属性的值只能

是其中一种类别。

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

“shares”“banlance”,“fares”“internet_shares”和“internet_banlance”的离散化我们需要借助WEKA中名为“Discretize”的Filter来完成。

在区域2中点“Choose”,出现一棵“Filter树”,逐级找到

“weka.filters.unsupervised.attribute.Discretize”,点击。

若无法关闭这个树,在树之外的地方点击“Explorer”面板即可。

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

我们不打算对所有的属性离散化,只是针对对第4,5,6,8,9个,故把attributeIndices右边改成“4,5,6,8,9”。

我们把这两个属性都分成10

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1