收藏 分享(赏)

数据挖掘工具(weka教程).ppt

上传人:无敌 文档编号:815593 上传时间:2018-04-27 格式:PPT 页数:84 大小:4.01MB
下载 相关 举报
数据挖掘工具(weka教程).ppt_第1页
第1页 / 共84页
数据挖掘工具(weka教程).ppt_第2页
第2页 / 共84页
数据挖掘工具(weka教程).ppt_第3页
第3页 / 共84页
数据挖掘工具(weka教程).ppt_第4页
第4页 / 共84页
数据挖掘工具(weka教程).ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、数据挖掘工具WEKA教程,广西科技大学理学院 韦振中,WEKA简介数据格式数据准备属性选择可视化分析分类预测关联分析聚类分析扩展WEKA,WEKA教程,课程的总体目标和要求:熟悉WEKA的基本操作,了解WEKA的各项功能掌握数据挖掘实验的流程准备数据选择算法和参数运行评估实验结果了解或掌握在WEKA中加入新算法的方法,WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),其源代码可从http:/www.cs.waikato.ac.nz/ml/weka/得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。

2、2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的WEKA小组荣获了数据挖掘和知识探索领域的最高服务奖, WEKA系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一。 WEKA的每月下载次数已超过万次。,1、WEKA简介,作为一个大众化的数据挖掘工作平台, WEKA集成了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理、分类、回归、聚类、关联分析以及在新的交互式界面上的可视化等等。通过其接口,可在其基础上实现自己的数据挖掘算法。,1、WEKA简介,WEKA所用的数据格式( 跟Excel一样)Explorer界面 Open

3、file Edit,2、数据格式,WEKA文件相关术语表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attribute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。上图中一共有14个实例,5个属性,关系名称为“weather”。WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。上图所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“w

4、eather.arff”文件,在WEKA安装目录的“data”子目录下可以找到。,2、数据格式,文件内容说明 识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。 以“%”开始的行是注释,WEKA将忽略这些行。如果你看到的“weather.arff”文件多了或少了些“%”开始的行,是没有影响的。 除去注释后,整个ARFF文件可以分为两个部分。第一部分给出了头信息(Head information),包括了对关系的声明和对属性的声明。第二部分给出了数据信息(Data information),即数据集中给出的数据。从“data”标记开始,后面的就是数

5、据信息了。,2、数据格式,关系声明 关系名称在ARFF文件的第一个有效行来定义,格式为 relation 是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。,2、数据格式,属性声明 属性声明用一列以“attribute”开头的语句表示。数据集中的每一个属性都有它对应的“attribute”语句,来定义它的属性名称和数据类型。 这些声明语句的顺序很重要。首先它表明了该项属性在数据部分的位置。例如,“humidity”是第三个被声明的属性,这说明数据部分那些被逗号分开的列中,第三列数据 85 90 86 96 . 是相应的“humidity”值。其次,最后一个声明

6、的属性被称作class属性,在分类或回归任务中,它是默认的目标变量。 属性声明的格式为 attribute 其中是以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。,2、数据格式(续),WEKA支持的有四种numeric数值型 标称(nominal)型string字符串型date 日期和时间型 其中 和 将在下面说明。还可以使用两个类型“integer”和“real”,但WEKA把它们都当作“numeric”看待。 注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”、“attribu

7、te ”和“data”则不区分。,2、数据格式,数值属性 数值型属性可以是整数或者实数,但WEKA把它们都当作实数看待。标称属性 标称属性由列出一系列可能的类别名称并放在花括号中: , , . 数据集中该属性的值只能是其中一种类别。 例如 如下的属性声明说明“outlook”属性有三种类别:“sunny”,“ overcast”和“rainy”。而数据集中每个实例对应的“outlook”值必是这三者之一。 attribute outlook sunny, overcast, rainy 如果类别名称带有空格,仍需要将之放入引号中。,2、数据格式,字符串属性 字符串属性中可以包含任意的文本。这种

8、类型的属性在文本挖掘中非常有用。 示例: ATTRIBUTE LCC string 日期和时间属性 日期和时间属性统一用“date”类型表示,它的格式是 attribute date 其中是这个属性的名称,是一个字符串,来规定该怎样解析和显示日期或时间的格式,默认的字符串是ISO-8601所给的日期时间组合格式 “yyyy-MM-dd HH:mm:ss”。 数据信息部分表达日期的字符串必须符合声明中规定的格式要求(下文有例子)。,2、数据格式,数据信息 数据信息中“data”标记独占一行,剩下的是各个实例的数据。每个实例占一行。实例的各属性值用逗号“,”隔开。如果某个属性的值是缺失值(miss

9、ing 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、数据格式,日期属性的值必

10、须与属性声明中给定的相一致。例如: RELATION Timestamps ATTRIBUTE timestamp DATE yyyy-MM-dd HH:mm:ss DATA 2001-04-03 12:12:12 2001-05-03 12:59:55,2、数据格式,数据文件格式转换 使用WEKA作数据挖掘,面临的第一个问题往往是我们的数据不是ARFF格式的。幸好,WEKA还提供了对CSV文件的支持,而这种格式是被很多其他软件,比如Excel所支持的。 利用WEKA可以将CSV文件格式转化成ARFF文件格式。ARFF格式是WEKA支持得最好的文件格式。此外,WEKA还提供了通过JDBC访问数

11、据库的功能。 “Explorer”界面 “Explorer”提供了很多功能,是WEKA使用最多的模块。现在我们先来熟悉它的界面,然后利用它对数据进行预处理。,3、数据准备,1,2,3,4,5,6,7,8,根据不同的功能把这个界面分成8个区域。区域1的几个选项卡是用来切换不同的挖掘任务面板。这一节用到的只有“Preprocess”,其他面板的功能将在以后介绍。区域2是一些常用按钮。包括打开数据,保存及编辑功能。在区域3中“Choose”某个“Filter”,可以实现筛选数据或者对数据进行某种变换。数据预处理主要就利用它来实现。区域4展示了数据集的一些基本情况。,3、数据准备,区域5中列出了数据集

12、的所有属性。勾选一些属性并“Remove”就可以删除它们,删除后还可以利用区域2的“Undo”按钮找回。区域5上方的一排按钮是用来实现快速勾选的。在区域5中选中某个属性,则区域6中有关于这个属性的摘要。注意对于数值属性和标称属性,摘要的方式是不一样的。图中显示的是对数值属性“income”的摘要。,3、数据准备,区域7是区域5中选中属性的直方图。若数据集的最后一个属性(这是分类或回归任务的默认目标变量)是类标变量(这里的“pep”正好是),直方图中的每个长方形就会按照该变量的比例分成不同颜色的段。要想换个分段的依据,在区域7上方的下拉框中选个不同的分类属性就可以了。下拉框里选上“No Clas

13、s”或者一个数值属性会变成黑白的直方图。,3、数据准备,区域8是状态栏,可以查看Log以判断是否有错。右边的weka鸟在动的话说明WEKA正在执行挖掘任务。右键点击状态栏还可以执行JAVA内存的垃圾回收。,3、数据准备,去除无用属性 通常对于数据挖掘任务来说,ID这样的信息是无用的,我们将之删除。在区域5勾选属性“id”,并点击“Remove”。将新的数据集保存为“bank-data.arff”,重新打开。离散化有些算法只能处理所有的属性都是标称型的情况。这时候我们就需要对数值型的属性进行离散化。在这个数据集中有3个变量是数值型的,分别是“age”,“income”和“children”。其中

14、“children”只有4个取值:0,1,2,3。这时我们直接修改ARFF文件,把 attribute children numeric 改为attribute children 0,1,2,3就可以了。 在“Explorer”中重新打开“bank-data.arff”,看看选中“children”属性后,区域6那里显示的“Type” 变成“Nominal”了。,3、数据准备,“age”和“income”的离散化可借助WEKA中名为“Discretize”的Filter来完成。在区域2中点“Choose”,出现一棵“Filter树”,逐级找到“weka.filters.unsupervised

15、.attribute.Discretize”,点击。现在“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”。经过上述操作得

16、到的数据集我们保存为bank-data-final.arff。,3、数据准备,属性类型转换NominalToBinary过滤器将所有nominal类型的属性转为binary(0,1二值)属性,一个可取k个值的nominal类型的属性转为k个二值属性,这样可将数据中所有属性转为数值(numeric)属性。以下是weather.arff转换后的结果。,3、数据准备,增加一个表达式属性AddExpression: An instance filter that creates a new attribute by applying a mathematical expression to exist

17、ing 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 :

18、a12*a5/log(a7*4.0).以下命令在weather.arff中增加了一个temp/hum属性,其值为第二个属性(temperature)除以第三个属性(humidity)的值。AddExpression E a2/a3 N temp/hum,3、数据准备,采样使用weka.filters.supervised.instance.Resample对整个数据集进行分层的采样(stratified subsample,采样所得数据仍保持原来的类分布)。以下Filter命令从soybean.arff中采样了5%的数据。Resample B 1.0 S 1 Z 5.0使用weka.filte

19、rs.unsupervised.instance.Resample 进行不分层的采样,即与类信息无关。以下Filter命令从soybean.arff中采样了5%的数据。Resample S 1 Z 5.0,3、数据准备,两种属性子集选择模式属性子集评估器 搜索方法单一属性评估器 排序方法,4、属性选择,属性子集评估器CfsSubsetEval: 综合考虑单一属性的预测值和属性间的重复度ClassifierSubsetEval: 用分类器评估属性集ConsistencySubsetEval: 将训练数据集映射到属性集上来检测类值的一致性WrapperSubsetEval: 使用分类器和交叉验证,

20、4.1 属性选择模式1,搜索方法BestFirst: 回溯的贪婪搜索ExhaustiveSearch: 穷举搜索GeneticSearch: 使用遗传算法搜索GreedyStepwise: 不回溯的贪婪搜索RaceSearch: 竞争搜索RandomSearch: 随机搜索RankSearch: 排列属性并使用属性子集评估器将有潜力的属性进行排序,单一属性评估器ChiSquaredAttributeEval: 以基于类的2为依据的属性评估GainRationAttributeEval: 以增益率为依据的属性评估InfoGainAttributeEval: 以信息增益为依据的属性评估OneRAt

21、tributeEval: 以OneR的方法论来评估属性PrincipleComponents: 进行主成分的分析和转换ReliefAttributeEval: 基于实例的属性评估器SymmetricalUncertAttributeEval: 以对称不确定性为依据的属性评估排序方法Ranker: 按照属性的评估对它们进行排序,4.2、属性选择模式2,二维散列图选择类标标称类标:数据点的颜色是离散的数值类标:数据点的颜色用色谱(蓝色到橙色)表示改变点阵的大小和点的大小改变抖动度,使互相重叠的点分开选择属性子集和采样注意:必须点击Update按钮上述改动才能生效,5、可视化分析,WEKA把分类(C

22、lassification)和回归(Regression)都放在“Classify”选项卡中。在这两个任务中,都有一个目标属性(类别属性,输出变量)。我们希望根据一个样本(WEKA中称作实例)的一组特征(输入变量),对目标进行预测。为了实现 这一目的,我们需要有一个训练数据集,这个数据集中每个实例的输入和输出都是已知的。观察训练集中的实例,可以建立起预测的模型。有了这个模型,我们就可以对新的未知实例进行预测了。衡量模型的好坏主要在于预测的准确程度。,6、分类预测,WEKA中的典型分类算法Bayes: 贝叶斯分类器BayesNet: 贝叶斯信念网络NaveBayes: 朴素贝叶斯网络Functi

23、ons: 人工神经网络和支持向量机MultilayerPerceptron: 多层前馈人工神经网络SMO: 支持向量机(采用顺序最优化学习方法)Lazy: 基于实例的分类器IB1: 1-最近邻分类器IBk: k-最近邻分类器,选择分类算法,Meta: 组合方法AdaBoostM1: AdaBoost M1方法Bagging: 袋装方法Rules: 基于规则的分类器JRip: 直接方法Ripper算法Part: 间接方法从J48产生的决策树抽取规则Trees: 决策树分类器Id3: ID3决策树学习算法(不支持连续属性)J48: C4.5决策树学习算法(第8版本)REPTree: 使用降低错误剪

24、枝的决策树学习算法RandomTree: 基于决策树的组合方法,选择分类算法,四种方法完全使用训练集使用外部的检验集交叉验证设置折数保持方法设置训练实例的百分比其他设置设置代价矩阵,选择模型评估方法,窗口显示的文字结果信息:运行信息使用全部训练数据构造的分类模型针对训练/检验集的预测效果汇总k-折交叉验证的结果是k次实验的汇总即 TP=TP1+TPk, FN=FN1+FNk, FP=FP1+FPk, TN=TN1+TNk基于类的详细结果加权平均的系数是类大小的百分比混淆矩阵,文字结果分析,可视化分类错误实际类与预测类的散布图可视化模型可视化图:贝叶斯网络查看条件概率表可视化树:决策树居中显示屏

25、幕大小显示自动调整显示查看结点关联的训练集,图形结果分析,可视化边缘曲线 (margin curve)显示预测边缘,即实际类的预测概率与其他类的最大预测概率的差别对于每个检验实例,从小到大显示预测边缘四个变量Margin: 预测边缘的值Instance_number: 检验实例的序号Current: 具有当前预测边缘值的实例个数Cumulative: 小于或等于预测边缘值的实例个数 (与Instance_number一致),图形结果分析,可视化阈值曲线(基于类)阈值是将检验实例归为当前类的最小概率,使用点的颜色表示阈值曲线上的每个点通过改变阈值的大小生成可以进行ROC分析X轴选假正率Y轴选真正

26、率问题:为什么决策树也可以进行ROC分析?可能答案:叶子不一定是纯的,存在类的概率分布,图形结果分析,优点同时对多个数据集和多个分类算法工作可以比较多个分类算法的性能缺点不能使用数据预处理工具不能选择类标,只能将输入数据集的最后一个属性作为类标三个页面设置页面 (Setup) 设置实验参数运行页面 (Run) 启动实验,监视实验过程分析页面 (Analyze) 分析实验结果,实验者界面,设置实验配置模式 (Experiment Configuration Mode)设置保存结果路径 (Choose Destination)设置实验类型 (Experiment Type)交叉验证保持方法(随机化

27、记录次序)保持方法(未知原有记录次序)迭代控制 (Iteration Control)设置实验迭代次数,特别适用于保持方法数据集 (Datasets)增加数据集,类标是数据集最后一个属性分类算法 (Algorithms)增加算法设置算法参数,设置页面,点击运行,报告运行情况运行后生成一个数据集一个记录对应一个数据集和一个分类算法的一次实验,字段包括算法、数据集和不同的性能度量分析仅限于数值分析和显著性测试没有可视化分析功能,运行页面,实验结果数据源 (Source)配置测试 (Configure test)选择行和列,行缺省是数据集,列缺省是Scheme, Scheme_options和Sch

28、eme_version_ID基准分类模型 (Test base)某个输入模型汇总 (summary)排序 (ranking)结果列表 (Result list)测试输出 (Test output),分析页面,分组对UCI数据集进行实验http:/archive.ics.uci.edu/ml/datasets.html12个组每组选择一个数据集分析实验内容使用一个UCI数据集,选择任意三个分类算法分析三个分类算法的实验结果解释文字分析结果解释图形分析结果使用两个性能度量比较三个分类算法的性能差异解释基于某个分类算法的性能比较结果解释基于排序的性能比较结果,实验内容,功能:将WEKA组件在设计画布

29、上相互连接以形成可进行动态数据处理分析的知识流两种数据处理模式批量处理增量处理探索者界面不支持增量处理数据目前WEKA实现了下面这些可增量学习的分类器:AODE、IB1、IBk、KStar、NaiveBayesMultinomialUpdateable、NaiveBayesUpdateable、NNge、Winnow、RacedIncrementalLogitBoost、LWL,知识流界面,交叉验证J48显示Datasources ArffLoaderEvaluation ClassAssignerEvaluation CrossValidationFoldMakerClassifiers J

30、48Evaluation ClassifierPerformanceEvaluatorVisualization TextViewerVisualization GraphViewer,批量处理模式,交叉验证J48显示,批量处理模式,交叉验证BayesNet显示Datasources ArffLoaderEvaluation ClassAssignerEvaluation CrossValidationFoldMakerClassifiers BayesNetEvaluation ClassifierPerformanceEvaluatorVisualization TextViewerVis

31、ualization GraphViewer,批量处理模式,交叉验证BayesNet显示,批量处理模式,增量学习NaiveBayesUpdateable显示Datasources ArffLoaderEvaluation ClassAssignerClassifiers NaiveBayesUpdateableEvaluation IncrementalClassiferEvaluatorVisualization TextViewerVisualization StripChartAccuracy 准确率RMSE 均方根误差 (root-mean-square error),增量处理模式,增

32、量学习NaiveBayesUpdateable显示,增量处理模式,Soybean数据的关联分析用“Explorer”打开“soybean.arff”后,切换到“Associate”选项卡。默认关联规则分析是用Apriori算法。点“Choose”右边的文本框修改默认的参数,弹出的窗口中点“More”可以看到各参数的说明。点击“Start”按钮开始关联分析。WEKA中关联分析的过程从数据项的最少支持度100%开始,逐步递减5,直到至少有所要求的最小置信度为0.9的10条规则,或者支持度达到了10%的下限。,7、关联分析,对于关联规则L-R,由支持度决定规则的统计显著性,并由四种不同的因素之一决定

33、规则的优先度。支持度(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) /

34、 Pr(L,R),Apriori的有关知识,任务一:挖掘支持度在10%到100%之间,并且提升度超过1.5且提升度排在前100位的关联规则“lowerBoundMinSupport”和“upperBoundMinSupport”分别设为0.1和1“metricType”设为lift“minMetric”设为1.5“numRules”设为100任务二:挖掘支持度在10%到100%之间,并且置信度超过0.8且置信度排在前100位的分类关联规则数据集为“weather.nominal.arff”“car”设为True“metricType”设为confidence (只能选confidence!)“

35、minMetric”设为0.8“numRules”设为100,参数设置,聚类分析是把对象分配给各个簇,使同簇中的对象相似,而不同簇间的对象相异。WEKA在“Explorer”界面的“Cluster”提供聚类分析工具,主要算法包括:SimpleKMeans 支持分类属性的K均值算法DBScan 支持分类属性的DBSCAN算法EM 基于混合模型的聚类算法FathestFirst K中心点算法OPTICS 基于密度的另一个算法Cobweb 概念聚类算法sIB 基于信息论的聚类算法,不支持分类属性XMeans 能自动确定簇个数的扩展K均值算法,不支持分类属性,8、聚类分析,聚类模式使用训练集 (Use

36、 training set) 报告训练对象的聚类结果和分组结果使用附加的检验集 (Supplied test set) 报告训练对象的聚类结果和附加的检验对象的分组结果百分比划分 (Percentage split) 报告全部对象的聚类结果、训练对象的聚类结果,以及检验对象的分组结果监督评估 (Classes to clusters evaluation) 报告训练对象的聚类结果和分组结果、类/簇混淆矩阵和错误分组信息SimpleKMeans重要参数N 簇个数DBScan重要参数E EpsM MinPts,参数设置,文字分析SimpleKMeans非监督模式:运行信息、KMeans结果(迭代次

37、数、SSE、簇中心)、检验对象的分组信息监督模式:运行信息、KMeans结果(迭代次数、SSE、簇中心)、类/簇混淆矩阵、错误分组的对象个数和比例簇中心:对于数值属性为均值,对于分类属性为众数DBScan非监督模式:运行信息、DBScan结果(迭代次数、各个训练对象的分组信息)、检验对象的分组信息监督模式:运行信息、 DBScan结果(迭代次数、各个训练对象的分组信息)、类/簇混淆矩阵、错误分组的对象个数和比例图形分析 (必须将store clusters for visualization勾上)可视化簇指派 (Visualize cluster assignments):2D散布图,能够可视

38、化类/簇混淆矩阵,结果分析,数据预处理Explorer Preprocess:Explorer Select attributes: 还可以在Preprocess页面使用属性选择方法数据可视化Explorer Visualize: 二维散布图分类预测Explorer Classify:Experimenter: 比较多个算法的性能KnowledgeFlow: 批量/增量学习模式关联分析Explorer Associate:聚类分析Explorer Cluster:,WEKA小结,为什么要扩展Weka?需要加入第三方的构件需要加入自己设计或改进的算法需要将Weka整合到实际的应用系统中要点重新编

39、译Weka加入新算法(第三方、自己设计或改进)在自己的Java程序中使用Weka,9、扩展Weka,下载并安装JDK和JRE环境 (http:/ (http:/www.cs.waikato.ac.nz/ml/weka/index_downloading.html )下载并安装开发环境Eclipse重新编译weka解压WEKA安装目录中的weka-src.jar到一个新建目录 weka-src下。打开Eclipse,“File”菜单 - “New”项目- 选择“Java Project” 。“Project name” 写weka。点击下一步。设置libraries Add External J

40、ars。从weka-src里面复制源代码。运行weka.gui.GUIChooser。,9.1、重新编译Weka,从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界面上的Clus

41、ter选项卡中找到刚刚新添加的FuzzyCMeans算法修改FuzzyCMeans.java中的函数getCapabilities(),以激活FuzzyCMeans算法重新编译,运行,9.2、加入新算法,开发过程中常用的weka组件:Instances-你的数据Filter-用于预处理数据Classifier/Clusterer-从预处理后的数据上建立Evaluating-评价Classifier/Clusterer的优劣Attribute Selection-从你的数据中去掉不相关的属性下面介绍如何在Java程序中使用以上组件。,9.3、在自己的程序中使用Weka,直接读入一个ARFF文件并

42、设置类别属性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 attributedata.setClassIndex(data.numAttributes() -

43、1);,InstancesARFF File Pre 3.5.5 and 3.4.x,使用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 prov

44、ide this informationif (data.classIndex() = -1) data.setClassIndex(data.numAttributes() - 1);,InstancesARFF File 3.5.5 and newer,Weka通过以下两个方法来设置和获取参数选项void setOptions(String options) String getOptions() 有多种方式设置选项手工生成一个字符串String options = new String2; options0 = -R; options1 = 1; 用splitOptions 方法将一个命

45、令行串变成字符串数组String options = weka.core.Utils.splitOptions(-R 1);,Option handling,一个过滤器有两个重要性质supervised 或 unsupervisedattribute-based 或 instance-based大多数过滤器都实现了OptionHandler 接口,这意味着你可以用String数组来设置选项,而无需用set-方法。例如,假设你要删除数据集的第一个实例,你可以执行weka.filters.unsupervised.attribute.Remove R 1,Filter,设data为一个Instan

46、ces对象,则可按以下方式创建和应用一个Filterimport 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

47、); / set options remove.setInputFormat(data); / inform filter about dataset *AFTER* setting options Instances newData = Filter.useFilter(data, remove);,使用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,

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

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报