WEKA教程完整版(新)

上传人:真** 文档编号:243001033 上传时间:2024-09-13 格式:PPT 页数:104 大小:2.11MB
返回 下载 相关 举报
WEKA教程完整版(新)_第1页
第1页 / 共104页
WEKA教程完整版(新)_第2页
第2页 / 共104页
WEKA教程完整版(新)_第3页
第3页 / 共104页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据挖掘工具,WEKA,教程,广东外语外贸大学,杜剑峰,WEKA,教程,WEKA,简介,数据格式,数据准备,属性选择,可视化分析,分类预测,关联分析,聚类分析,扩展,WEKA,课程的总体目标和要求:,熟悉,WEKA,的基本操作,了解,WEKA,的各项功能,掌握数据挖掘实验的流程,准备数据,选择算法和参数运行,评估实验结果,了解或掌握在,WEKA,中加入新算法的方法,1,、,WEKA,简介,WEKA,的全名是怀卡托智能分析环境(,Waikato,Environment for Knowledge Analysis,),其源代码可从,http:/,www.cs.waikato.ac.nz/ml/weka,/,得到。同时,weka,也是新西兰的一种鸟名,而,WEKA,的主要开发者来自新西兰。,2005,年,8,月,在第,11,届,ACM SIGKDD,国际会议上,怀卡托大学的,WEKA,小组荣获了数据挖掘和知识探索领域的最高服务奖,,WEKA,系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今,最完备,的数据挖掘工具之一。,WEKA,的每月下载次数已超过万次。,1,、,WEKA,简介(续),作为一个大众化的数据挖掘工作平台,,WEKA,集成了大量能承担数据挖掘任务的机器学习算法,包括对数据进行,预处理,、,分类,、,回归,、,聚类,、,关联分析,以及在新的交互式界面上的,可视化,等等。通过其接口,可在其基础上实现自己的数据挖掘算法。,WEKA,的界面,2,、数据格式,WEKA,所用的数据格式( 跟,Excel,一样),Explorer,界面,Open file,Edit,2,、数据格式(续),WEKA,文件相关术语,表格里的一个横行称作一个实例(,Instance,),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(,Attribute,),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在,WEKA,看来,呈现了属性之间的一种关系,(Relation),。上图中一共有,14,个实例,,5,个属性,关系名称为,“,weather”,。,WEKA,存储数据的格式是,ARFF,(,Attribute-Relation File Format,)文件,这是一种,ASCII,文本文件。上图所示的二维表格存储在如下的,ARFF,文件中。这也就是,WEKA,自带的,“,weather.arff,”,文件,在,WEKA,安装目录的,“,data”,子目录下可以找到。,2,、数据格式(续),文件内容说明,识别,ARFF,文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。,以,“,%”,开始的行是注释,,WEKA,将忽略这些行。如果你看到的,“,weather.arff,”,文件多了或少了些,“,%”,开始的行,是没有影响的。,除去注释后,整个,ARFF,文件可以分为两个部分。,第一部分给出了头信息(,Head information,),包括了对关系的声明和对属性的声明。,第二部分给出了数据信息(,Data information,),即数据集中给出的数据。从,“,data”,标记开始,后面的就是数据信息了。,2,、数据格式(续),关系声明,关系名称在,ARFF,文件的第一个有效行来定义,格式为,relation ,是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。,2,、数据格式(续),属性声明,属性声明用一列以,“,attribute”,开头的语句表示。数据集中的每一个属性都有它对应的,“,attribute”,语句,来定义它的属性名称和数据类型。,这些声明语句的顺序很重要。首先它表明了该项属性在数据部分的位置。例如,,“,humidity”,是第三个被声明的属性,这说明数据部分那些被逗号分开的列中,第三列数据,85 90 86 96 .,是相应的,“,humidity”,值。其次,最后一个声明的属性被称作,class,属性,在分类或回归任务中,它是默认的目标变量。,属性声明的格式为,attribute ,其中,是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。,2,、数据格式(续),WEKA,支持的,有四种,numeric,数值型,标称(,nominal,)型,string,字符串型,date ,日期和时间型,其中,和,将在下面说明。还可以使用两个类型,“,integer”,和,“,real”,,但是,WEKA,把它们都当作,“,numeric”,看待。注意,“,integer”,,,“,real”,,,“,numeric”,,,“,date”,,,“,string”,这些关键字是区分大小写的,而,“,relation”,、“,attribute ”,和,“,data”,则不区分。,2,、数据格式(续),数值属性,数值型属性可以是整数或者实数,但,WEKA,把它们都当作实数看待。,标称属性,标称属性由,列出一系列可能的类别名称并放在花括号中:, , , .,。数据集中该属性的值只能是其中一种类别。,例如如下的属性声明说明,“,outlook”,属性有三种类别:,“,sunny”,,,“,overcast”,和,“,rainy”,。而数据集中每个实例对应的,“,outlook”,值必是这三者之一。,attribute outlook sunny, overcast, rainy,如果类别名称带有空格,仍需要将之放入引号中。,2,、数据格式(续),字符串属性,字符串属性中可以包含任意的文本。这种类型的属性在文本挖掘中非常有用。,示例:,ATTRIBUTE LCC string,日期和时间属性,日期和时间属性统一用,“,date”,类型表示,它的格式是,attribute date ,其中,是这个属性的名称,,是一个字符串,来规定该怎样解析和显示日期或时间的格式,默认的字符串是,ISO-8601,所给的日期时间组合格式,“,yyyy-MM-dd,T,HH:mm:ss,”,。,数据信息部分表达日期的字符串必须符合声明中规定的格式要求(下文有例子)。,2,、数据格式(续),数据信息,数据信息中,“,data”,标记独占一行,剩下的是各个实例的数据。,每个实例占一行。实例的各属性值用逗号,“,”,隔开。如果某个属性的值是缺失值(,missing value,),用问号,“,?”,表示,且这个问号不能省略。例如:,data sunny,85,85,FALSE,no ?,78,90,?,yes,2,、数据格式(续),字符串属性和标称属性的值是区分大小写的。若值中含有空格,必须被引号括起来。例如:,relation,LCCvsLCSH,attribute LCC string attribute LCSH string data,AG5, Encyclopedias and,dictionaries.;Twentieth,century. AS262, Science - Soviet Union - History.,2,、数据格式(续),日期属性的值必须与属性声明中给定的相一致。例如:,RELATION Timestamps ATTRIBUTE timestamp DATE ,yyyy-MM-dd,HH:mm:ss, DATA 2001-04-03 12:12:12 2001-05-03 12:59:55,3,、数据准备,数据文件格式转换,使用,WEKA,作数据挖掘,面临的第一个问题往往是我们的数据不是,ARFF,格式的。幸好,,WEKA,还提供了对,CSV,文件的支持,而这种格式是被很多其他软件,比如,Excel,,所支持的。现在我们打开“,bank-,data.csv,”,。,利用,WEKA,可以将,CSV,文件格式转化成,ARFF,文件格式。,ARFF,格式是,WEKA,支持得最好的文件格式。,此外,,WEKA,还提供了通过,JDBC,访问数据库的功能。,“,Explorer”,界面,“,Explorer”,提供了很多功能,是,WEKA,使用最多的模块。现在我们先来熟悉它的界面,然后利用它对数据进行预处理。,3,、数据准备(续),bank-data,数据各属性的含义如下:,id: a unique identification number age: age of customer in years (numeric) sex: MALE / FEMALE region:,inner_city,/rural/suburban/town income: income of customer (numeric) married:is the customer married (YES/NO) children: number of children (numeric) car: does the customer own a car (YES/NO),save_act,: does the customer have a saving account (YES/NO),current_act:does,the customer have a current account (YES/NO) mortgage: does the customer have a mortgage (YES/NO) pep: did the customer buy a PEP (Personal Equity Plan,,个人参股计划,) after the last mailing (YES/NO),1,2,3,4,5,6,7,8,3,、数据准备(续),上图显示的是,“,Explorer”,打开,“,bank-,data.csv,”,的情况。我们根据不同的功能把这个界面分成,8,个区域。,区域,1,的几个选项卡是用来切换不同的挖掘任务面板。,区域,2,是一些常用按钮。包括打开数据,保存及编辑功能。我们可以在这里把,“,bank-,data.csv,”,另存为,“,bank-,data.arff,”,。,在区域,3,中,“,Choose”,某个,“,Filter”,,可以实现筛选数据或者对数据进行某种变换。数据预处理主要就利用它来实现。,区域,4,展示了数据集的一些基本情况。,区域,5,中列出了数据集的所有属性。勾选一些属性并,“,Remove”,就可以删除它们,删除后还可以利用区域,2,的,“,Undo”,按钮找回。区域,5,上方的一排按钮是用来实现快速勾选的。在区域,5,中选中某个属性,则区域,6,中有关于这个属性的摘要。注意对于数值属性和标称属性,摘要的方式是不一样的。图中显示的是对数值属性,“,income”,的摘要。,3,、数据准备(续),区域,7,是区域,5,中选中属性的直方图。若数据集的某个属性是目标变量,直方图中的每个长方形就会按照该变量的比例分成不同颜色的段。默认地,分类或回归任务的默认目标变量是数据集的最后一个属性(这里的,“,pep”,正好是)。要想换个分段的依据,即目标变量,在区域,7,上方的下拉框中选个不同的分类属性就可以了。下拉框里选上,“,No Class”,或者一个数值属性会变成黑白的直方图。,区域,8,是状态栏,可以查看,Log,以判断是否有错。右边的,weka,鸟在动的话说明,WEKA,正在执行挖掘任务。右键点击状态栏还可以执行,JAVA,内存的垃圾回收。,3,、数据准备(预处理,1,),删除无用属性,通常对于数据挖掘任务来说,,ID,这样的信息是无用的,我们将之删除。在区域,5,勾选属性,“,id”,,并点击,“,Remove”,。将新的数据集保存为“,bank-,data.arff,”,,重新打开。 此外,我们可以通过名为“,RemoveType,”,的,Filter,删除某一类型的属性。,离散化,我们知道,有些算法,(,如关联分析,),,只能处理所有的属性都是标称型的情况。这时候我们就需要对数值型的属性进行离散化。在这个数据集中有,3,个变量是数值型的,分别是,“,age”,,,“,income”,和,“,children”,。,其中,“,children”,只有,4,个取值:,0,,,1,,,2,,,3,。这时我们可以通过,名为,“,NumericToNominal,”,的,Filter,将,children,的类型变成,Nominal,。,3,、数据准备(预处理,2,),离散化(续),“,age”,和,“,income”,的离散化可借助,WEKA,中名为,“,Discretize,”,的,Filter,来完成。,现在,“,Choose”,旁边的文本框应该显示,“,Discretize,-B 10 -M -0.1 -R first-last”,。 点击这个文本框会弹出新窗口以修改离散化的参数。,我们不打算对所有的属性离散化,只是针对对第,1,个和第,4,个属性(见区域,5,属性名左边的数字),故把,attributeIndices,右边改成,“,1,4”,。计划把这两个属性都分成,3,段,于是把,“,bins”,改成,“,3”,。其它框里不用更改。点,“,OK”,回到,“,Explorer”,,可以看到,“,age”,和,“,income”,已经被离散化成分类型的属性。若想放弃离散化可以点区域,2,的,“,Undo”,。,经过上述操作得到的数据集我们保存为,bank-data-,final.arff,。,3,、数据准备(预处理,3,),属性类型转换,NominalToBinary,过滤器将所有,nominal,类型的属性转为,binary(0,1,二值,),属性,一个可取,k,个值的,nominal,类型的属性转为,k,个二值属性,这样可将数据中所有属性转为数值,(numeric),属性。以下是,weather.arff,转换后的结果。,3,、数据准备(预处理,4,),增加一个表达式属性,AddExpression: An instance filter that creates a new attribute by applying a mathematical expression to existing attributes. The expression can contain attribute references and numeric constants. Supported operators are : +, -, *, /, , log, abs,cos, exp,sqrt, floor, ceil,rint, tan, sin, (, ),Attributes are specified by prefixing with a,eg,. a7 is attribute number 7 (starting from 1).,Example expression : a12*a5/log(a7*4.0).,以下命令在,weather.arff,中增加了一个,temp/hum,属性,其值为第二个属性(,temperature,)除以第三个属性(,humidity,)的值。,AddExpression E a2/a3 N temp/hum,3,、数据准备(预处理,5,),采样,使用,weka.filters.supervised.instance.Resample,对整个数据集进行分层的采样,(stratified,subsample,,采样所得数据仍保持原来的类分布,),。以下,Filter,命令从,soybean.arff,中采样了,5%,的数据。,Resample B 0.0 S 1 Z 5.0,使用,weka.filters.unsupervised.instance.Resample,进行不分层的采样,即与类信息无关。以下,Filter,命令从,soybean.arff,中采样了,5%,的数据。,Resample S 1 Z 5.0,4,、属性选择,两种属性子集选择模式,属性子集评估器 搜索方法,单一属性评估器 排序方法,4.1,属性选择模式,1,属性子集评估器,CfsSubsetEval,:,综合考虑单一属性的预测值和属性间的重复度,ClassifierSubsetEval,:,用分类器评估属性集,ConsistencySubsetEval,:,将训练数据集映射到属性集上来检测类值的一致性,WrapperSubsetEval,:,使用分类器和交叉验证(包装方法),搜索方法,BestFirst,:,回溯的贪婪搜索,ExhaustiveSearch,:,穷举搜索(穷举方法),GeneticSearch,:,使用遗传算法搜索,GreedyStepwise,:,不回溯的贪婪搜索,RandomSearch,:,随机搜索,RankSearch,:,排列属性并使用属性子集评估器将有潜力的属性进行排序,4.2,、属性选择模式,2,单一属性评估器,ChiSquaredAttributeEval,:,以基于类的,2,为依据的属性评估,GainRationAttributeEval,:,以增益率为依据的属性评估,InfoGainAttributeEval,:,以信息增益为依据的属性评估,OneRAttributeEval,:,以,OneR,的方法论来评估属性,PrincipleComponents,:,进行主成分的分析和转换,ReliefAttributeEval,:,基于实例的属性评估器,SymmetricalUncertAttributeEval,:,以对称不确定性为依据的属性评估,排序方法,Ranker,:,按照属性的评估对它们进行排序,5,、可视化分析,二维散列图,选择类标,标称类标:数据点的颜色是离散的,数值类标:数据点的颜色用色谱(蓝色到橙色)表示,改变点阵的大小和点的大小,改变抖动度,使互相重叠的点分开,选择属性子集和采样,注意:必须点击,Update,按钮上述改动才能生效,6,、分类预测,WEKA,把分类,(Classification),和回归,(Regression),都放在“,Classify”,选项卡中。,在这两个任务中,都有一个目标属性(即输出变量或类标)。我们希望根据一个样本,(WEKA,中称作实例,),的一组特征(输入变量),对目标进行预测。为了实现这一目的,我们需要有一个训练数据集,这个数据集中每个实例的输入和输出都是已知的。观察训练集中的实例,可以建立起预测的模型。有了这个模型,我们就可以对新的未知实例进行预测了。衡量模型的好坏主要在于预测的准确率。,选择分类算法,WEKA,中的典型分类算法,Bayes,:,贝叶斯分类器,BayesNet,:,贝叶斯信念网络,NaveBayes,:,朴素贝叶斯网络,Functions:,人工神经网络和支持向量机,MultilayerPerceptron,:,多层前馈人工神经网络,SMO:,支持向量机(采用顺序最优化学习方法),Lazy:,基于实例的分类器,IB1: 1-,最近邻分类器,IBk,: k-,最近邻分类器,选择分类算法,Meta:,组合方法,AdaBoostM1:,AdaBoost,M1,方法,Bagging:,袋装方法,Rules:,基于规则的分类器,JRip,:,直接方法,Ripper,算法,Part:,间接方法从,J48,产生的决策树抽取规则(,不是,C4.5,规则算法,),Trees:,决策树分类器,Id3: ID3,决策树学习算法(,不支持连续属性,),J48: C4.5,决策树学习算法(第,8,版本),RandomForest,:,基于决策树的组合方法,选择模型评估方法,四种方法,使用训练集作为测试集,使用外部的测试集,交叉验证,设置折数,保持方法,设置训练实例的百分比,其他设置,设置代价矩阵,使用训练集作为测试集,使用外部的测试集,K,折交叉验证,保持方法,点击这里进入设置框,点击这里设置代价矩阵,代价矩阵,文字结果分析,窗口显示的文字结果信息:,运行信息,使用全部训练数据构造的分类模型,针对测试集的测试结果汇总,k-,折交叉验证的结果是,k,次实验的汇总,即,TP=TP,1,+,TP,k, FN=FN,1,+,FN,k,FP=FP,1,+,FP,k, TN=TN,1,+,TN,k,基于类的详细结果,加权平均的系数是类大小的百分比,混淆矩阵,运行信息,基于全部训练数据构造的分类模型,测试结果汇总,基于类的详细结果,混淆矩阵(多类),图形结果分析,可视化分类错误,实际类与预测类的散布图,可视化模型,可视化图:贝叶斯网络,查看条件概率表,可视化树:决策树,居中显示,屏幕大小显示,自动调整显示,查看结点关联的训练集,Visualize classifier errors:,实际类与预测类的散布图,Visualize graph:,贝叶斯网络图,点击这里看结点的条件概率表,P(income,=(-inf-12642.6 | pep=YES) = 0.048,P(income,=(-inf-12642.6 | pep=NO) = 0.144,点击这里看结点的先验概率表,Visualize tree:,决策树图 自动调整显示,点击这里看结点关联的数据集,3,个数据点,1,个分类错误,图形结果分析,可视化边缘曲线,(margin curve),显示,预测边缘,,即实际类的预测概率与其他类的最大预测概率的差别,对于每个测试样本,从小到大显示预测边缘,四个变量,Margin:,预测边缘的值,Instance_number,:,测试样本的序号,Current:,具有当前预测边缘值的样本个数,Cumulative:,小于或等于预测边缘值的样本个数 (与,Instance_number,一致),Visualize margin curve:,边缘曲线图,纵轴:小于等于边缘值的样本个数,横轴:边缘值,(边缘值接近,1,的样本越多越好),图形结果分析,可视化阈值曲线(基于类),阈值是将检验实例归为当前类的最小概率,使用点的颜色表示阈值,曲线上的每个点通过改变阈值的大小生成,可以进行,ROC,分析,X,轴选假正率(,false positive,),Y,轴选真正率(,true positive,),ROC,曲线,接受者操作特征,(Receiver Operating Characteristic),曲线:描绘 真正率,TPR (,纵轴,),随着 假正率,FPR (,横轴,),变化的趋势,AUC,:,ROC,曲线下方的区域面积(理想情况,AUC=1,),如何构造,ROC,曲线,测试样本概率阈值,=,ROC,曲线,:,测试样本属于,+,类的概率,TPR,FPR,Visualize threshold curve:,基于某个类的,ROC,曲线,实验者界面,优点,同时对多个数据集和多个分类算法工作,可以比较多个分类算法的性能,缺点,不能使用数据预处理工具,不能选择类标,只能将输入数据集的最后一个属性作为类标,三个页面,设置页面,(Setup), 设置实验参数,运行页面,(Run), 启动实验,监视实验过程,分析页面,(Analyze), 分析实验结果,设置页面,设置实验配置模式,(Experiment Configuration Mode),设置结果保存路径,(Choose Destination),设置实验类型,(Experiment Type),交叉验证,保持方法(随机化记录次序),保持方法(维持原有记录次序),迭代控制,(Iteration Control),设置实验迭代次数,减少数据抽样随机性的影响,数据集,(Datasets),增加数据集,类标是数据集最后一个属性,分类算法,(Algorithms),增加算法,设置算法参数,设置实验配置模式(一般使用,New,),设置结果保存路径(一般不填),设置实验类型,设置实验迭代次数,设置数据集(可多个),设置分类算法(可多个),运行页面,点击运行,报告运行情况,运行后生成一个数据集,一个记录对应一个数据集和一个分类算法的一次实验,字段包括算法、数据集和不同的性能度量,该数据集保存在内存中,分析仅限于算法性能比较的显著性检验,没有可视化分析功能,按,Start,开始测试,测试结束后提示错误信息,测试结果保存在内存,分析页面,实验结果数据源,(Source),配置测试,(Configure test),选择行和列,行缺省是数据集,列缺省是,Scheme,Scheme_options,和,Scheme_version_ID,测试基准,(Test base),某个算法,汇总,(summary),排序,(ranking),结果列表,(Result list),测试输出,(Test output),点击该按钮分析保存在内存中的实验结果,数据集有,900,个记录,,因为,3,个数据集,,3,个算法,每个,算法,10,折交叉验证,迭代,10,次,,总共产生,3*3*10*,10,900,条记录,重要!,选择测试基准,某个算法,汇总,排序,算法性能比较的测试:,t-,测试,(,x/y/z,),x:,比较算法性能显著,高,的数据集个数,y:,比较算法性能无显著差别的数据集个数,z:,比较算法性能显著,低,的数据集个数,列算法,比,行算法,性能,显著,高的数据集个数,列算法,比,行算法,性能高的数据集个数,比,行算法,性能,显著,高的,(,算法,数据集,),个数,比,行算法,性能,显著,低的,(,算法,数据集,),个数,比,行算法,性能,显著,低的,(,算法,数据集,),个数,减去,比,行算法,性能,显著,高的,(,算法,数据集,),个数,实验内容,分组对,UCI,数据集进行实验,1516,个组,每组选择一个数据集分析,实验内容,使用一个,UCI,数据集,评估至少三个分类算法的性能,解释哪个算法的性能最好,是否显著地好,分析性能最好的算法的实验结果,解释文字部分的性能评估结果,解释图形部分的性能评估结果,解释分类模型,知识流界面,功能:将,WEKA,组件在设计画布上相互连接以形成可进行动态数据处理分析的知识流,两种数据处理模式,批量处理,探索者界面支持的测试模式,在知识流界面都支持,增量处理,探索者界面不支持增量处理数据,目前,WEKA,实现了下面这些可增量学习的分类器:,AODE,、,IB1,、,IBk,、,KStar,、,NaiveBayesMultinomialUpdateable,、,NaiveBayesUpdateable,、,NNge,、,Winnow,、,RacedIncrementalLogitBoost,、,LWL,批量处理模式(交叉验证),交叉验证,J48,显示,Datasources,ArffLoader,Evaluation ,ClassAssigner,Evaluation ,CrossValidationFoldMaker,Classifiers J48,Evaluation ,ClassifierPerformanceEvaluator,Visualization ,TextViewer,Visualization ,GraphViewer,批量处理模式(交叉验证),交叉验证,J48,显示,批量处理模式(保持方法),保持方法,J48,显示,Datasources,ArffLoader,Evaluation ,ClassAssigner,Evaluation ,TrainTestSplitMaker,Classifiers J48,Evaluation ,ClassifierPerformanceEvaluator,Visualization ,TextViewer,Visualization ,GraphViewer,批量处理模式(保持方法),保持方法,J48,显示,批量处理模式(外部测试集),使用外部测试集,J48,显示,Datasources, ArffLoader,2,Evaluation ClassAssigner,2,Evaluation ,TrainingSetMaker,Evaluation ,TestSetMaker,Classifiers J48,Evaluation ,ClassifierPerformanceEvaluator,Visualization ,TextViewer,Visualization ,GraphViewer,批量处理模式(外部测试集),使用外部测试集,J48,显示,批量处理模式(训练集用于测试),训练集用于测试的,J48,显示,Datasources,ArffLoader,Evaluation ,ClassAssigner,Evaluation ,TrainingSetMaker,Evaluation ,TestSetMaker,Classifiers J48,Evaluation ,ClassifierPerformanceEvaluator,Visualization ,TextViewer,Visualization ,GraphViewer,批量处理模式(训练集用于测试),训练集用于测试的,J48,显示,增量处理模式,增量学习,NaiveBayesUpdateable,显示,Datasources,ArffLoader,Evaluation ,ClassAssigner,Classifiers ,NaiveBayesUpdateable,Evaluation ,IncrementalClassiferEvaluator,Visualization ,TextViewer,Visualization ,StripChart,Accuracy ,准确率,RMSE ,均方根误差,(root-mean-square error),增量处理模式,增量学习,NaiveBayesUpdateable,显示,7,、关联分析,对于关联规则,L-R,,由支持度决定规则的统计显著性,并由四种不同的因素之一决定规则的优先度。,支持度(,support,),同时观察到前件和后件的概率,support =,Pr(L,R,),置信度(,confidence,),出现前件时同时出现后件的概率,confidence =,Pr(L,R)/Pr(L,),提升度(,lift,),置信度与后件支持度的比率,lift =,Pr(L,R,) / (,Pr(L)Pr(R,),平衡度(,leverage,),在前件和后件统计独立的假设下,被前件和后件同时涵盖的超出期望值的那部分实例的比例,leverage =,Pr(L,R,) -,Pr(L)Pr(R,),可信度(,conviction,),也用来衡量前件和后件的独立性,conviction =,Pr(L)Pr(not,R) /,Pr(L,R,),基本的关联分析操作,Soybean,数据的关联分析,用,“,Explorer”,打开,“,soybean.arff,”,后,切换到,“,Associate”,选项卡。默认关联规则分析是用,Apriori,算法。,点,“,Choose”,右边的文本框修改默认的参数,弹出的窗口中点,“,More”,可以看到各参数的说明。,点击“,Start”,按钮开始关联分析。,WEKA,中关联分析的过程,假设最小置信度设定为,0.9,,支持度上限,1,,支持度下限,0.1,:,从数据项的支持度上限,100%-5%,开始,逐步递减,5,,直到至少有满足置信度条件(即,90%,)的,10,条规则,或者支持度达到了,10%,的下限。,参数设置练习,数据集为“,weather.nominal.arff,”,任务一:挖掘支持度在,10%,到,100%,之间,并且提升度超过,1.5,且提升度排在前,100,位的关联规则,“,lowerBoundMinSupport,”,和,“,upperBoundMinSupport,”,分别设为,0.1,和,1,“,metricType,”,设为,lift,“,minMetric,”,设为,1.5,“,numRules,”,设为,100,任务二:挖掘支持度在,10%,到,100%,之间,并且置信度超过,0.8,且置信度排在前,100,位的,分类关联规则,“,car”,设为,True,“,metricType,”,设为,confidence (,只能选,confidence!),“,minMetric,”,设为,0.8,“,numRules,”,设为,100,知识流界面运行,挖掘支持度在,10%,到,100%,之间,并且置信度超过,0.8,且置信度排在前,100,位的,分类关联规则,数据集为“,weather.nominal.arff,”,“car”,设为,True,“,metricType,”,设为,confidence (,只能选,confidence!),“,minMetric,”,设为,0.8,“,numRules,”,设为,100,8,、聚类分析,聚类分析是把对象分配给各个簇,使同簇中的对象相似,而不同簇间的对象相异。,WEKA,在“,Explorer”,界面的“,Cluster”,提供聚类分析工具,主要算法包括:,SimpleKMeans,支持分类属性的,K,均值算法,DBScan,支持分类属性的,DBSCAN,算法,EM ,基于混合模型的聚类算法,FathestFirst, K,中心点算法,OPTICS ,基于密度的另一个算法,Cobweb ,概念聚类算法,sIB,基于信息论的聚类算法,不支持分类属性,XMeans,能自动确定簇个数的扩展,K,均值算法,不支持分类属性,参数设置,聚类模式,使用训练集,(Use training set) ,报告训练对象的聚类结果和分组结果,使用附加的检验集,(Supplied test set) ,报告训练对象的聚类结果和附加的检验对象的分组结果,百分比划分,(Percentage split) ,报告全部对象的聚类结果、训练对象的聚类结果,以及检验对象的分组结果,监督评估,(Classes to clusters evaluation) ,报告训练对象的聚类结果和分组结果、类,/,簇混淆矩阵和错误分组信息,SimpleKMeans,重要参数,N ,簇个数,DBScan,重要参数,E ,Eps,M ,MinPts,结果分析,文字分析,SimpleKMeans,非监督模式:运行信息、,KMeans,结果(迭代次数、,SSE,、簇中心)、检验对象的分组信息,监督模式:运行信息、,KMeans,结果(迭代次数、,SSE,、簇中心)、类,/,簇混淆矩阵、错误分组的对象个数和比例,簇中心:对于数值属性为均值,对于分类属性为众数,DBScan,非监督模式:运行信息、,DBScan,结果(迭代次数、各个训练对象的分组信息)、检验对象的分组信息,监督模式:运行信息、,DBScan,结果(迭代次数、各个训练对象的分组信息)、类,/,簇混淆矩阵、错误分组的对象个数和比例,图形分析 (必须将,store clusters for visualization,勾上),可视化簇指派,(Visualize cluster assignments),:,2D,散布图,能够可视化类,/,簇混淆矩阵,知识流界面运行,没有评估信息,产生评估信息,WEKA,小结,数据预处理,Explorer Preprocess:,Explorer Select attributes:,还可以在,Preprocess,页面使用属性选择方法,数据可视化,Explorer Visualize:,二维散布图,分类预测,Explorer Classify:,Experimenter:,比较多个算法的性能,KnowledgeFlow,:,批量,/,增量学习模式,关联分析,Explorer Associate:,聚类分析,Explorer Cluster:,9,、扩展,Weka,为什么要扩展,Weka,?,需要加入第三方的构件,需要加入自己设计或改进的算法,需要将,Weka,整合到实际的应用系统中,要点,重新编译,Weka,加入新算法(第三方、自己设计或改进),在自己的,Java,程序中使用,Weka,9.1,、重新编译,Weka,下载并安装,JDK,和,JRE,环境,(,http:/, “New”,项目,-,选择“,Java Project”,。“,Project name”,写,weka,。点击下一步。,设置,libraries Add External Jars,。,从,weka-src,里面复制源代码。,运行,weka.gui.GUIChooser,。,9.2,、加入新算法,从,weka,中文站下载,FuzzyCMeans.java,复制到,weka.clusterers,包中,修改,FuzzyCMeans.java,,改正错误代码,修改,weka.gui.GenericObjectEditor.props,,,在,#Lists the,Clusterers,I want to choose from,的,weka.clusterers.Clusterer,=,下加入:,weka.clusterers.FuzzyCMeans,重新编译,运行,可以在,weka,的,Explorer,界面上的,Cluster,选项卡中找到刚刚新添加的,FuzzyCMeans,算法,修改,FuzzyCMeans.java,中的函数,getCapabilities,(),,以激活,FuzzyCMeans,算法,重新编译,运行,9.3,、在自己的程序中使用,Weka,开发过程中常用的,weka,组件:,Instances-,你的数据,Filter-,用于预处理数据,Classifier/,Clusterer,-,从预处理后的数据上建立,Evaluating-,评价,Classifier/,Clusterer,的优劣,Attribute Selection-,从你的数据中去掉不相关的属性,下面介绍如何在,Java,程序中使用以上组件。,Instances,ARFF File Pre 3.5.5 and 3.4.x,直接读入一个,ARFF,文件并设置类别属性,import,weka.core.Instances,;,import,java.io.BufferedReader,;,import,java.io.FileReader,;,.,BufferedReader,reader = new,BufferedReader,( new,FileReader(/some/where/data.arff,);,Instances data = new,Instances(reader,);,reader.close,();,/ setting class attribute,data.setClassIndex(data.numAttributes,() - 1);,Instances,ARFF File 3.5.5 and newer,使用,DataSource,类可读入,ARFF,、,CSV,以及其它可通过,Converter,导入的文件,import,weka.core.converters.ConverterUtils.DataSource,;,.,DataSource,source = new,DataSource(/some/where/data.arff,);,Instances data =,source.getDataSet,();,/ setting class attribute if the data format does not provide this information,if (,data.classIndex,() = -1),data.setClassIndex(data.numAttributes,() - 1);,Option handling,Weka,通过以下两个方法来设置和获取参数选项,void,setOptions(String, options),String,getOptions,(),有多种方式设置选项,手工生成一个字符串,String options = new String2;,options0 = -R;,options1 = 1;,用,splitOptions,方法将一个命令行串变成字符串数组,String options =,weka.core.Utils.splitOptions,(-R 1);,Filter,一个过滤器有两个重要性质,supervised,或,unsupervised,attribute,-based,或,instance,-based,大多数过滤器都实现了,OptionHandler,接口,这意味着你可以用,String,数组来设置选项,而无需用,set-,方法。,例如,假设你要删除数据集的第一个实例,你可以执行,weka.filters.unsupervised.attribute.Remove,R 1,设,data,为一个,Instances,对象,则可按以下方式创建和应用一个,Filter,import,weka.core.Instances,;,import,weka.filters.Filter,;,import,weka.filters.unsupervised.attribute.Remove,;,.,String options = new String2;,options0 = -R; / range,options1 = 1; / first attribute,Remove,remove,= new Remove(); / new instance of filter,remove.setOptions(options,); / set options,remove.setInputFormat(data,); / inform filter about dataset *AFTER* setting options,Instances,newData,=,Filter.useFilter(data, remove);,Building a Classifier,Batch,使用,buildClassifier(Instances,),方法在给定的数据集,Instances,上建立分类器,import weka.classifiers.trees.J48;,.,String options = new String1;,options0 = -U; /,unpruned,tree,J48 tree = new J48(); / new instance of tree,tree.setOptions(options,); / set the options,tree.buildClassifier(data,); / build classifier,Building a Classifier,Incremental,实现了,weka.classifiers.UpdateableClassifier,接口的分类器可以被增量地训练,这样节省了内存,因为数据无需一次性地全部装入内存。,训练增量分类器的过程:,Call,buildClassifier(Instances,) with the structure of the dataset (may or may not contain any actual data rows).,Subsequently call the,updateClassifier(Instance,) method to feed the classifier one by one.,示例,/ load data,ArffLoader,loader = new,ArffLoader,();,loader.setFile(new,File(/some/where/,data.arff,);,Instances structure =,loader.getStructure,();,structure.setClassIndex(structure.numAttributes,() - 1);,/ train,NaiveBayes,NaiveBayesUpdateable,nb,=,new,NaiveBayesUpdateable,();,nb.buildClassifier(structure,);,Instance current;,while (current =,loader.getNextInstance(structure,) != null),nb.updateClassi
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!