




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录目录1Weka数据格式1Weka初步3Weka数据格式ARFF文件是Weka默认的储存数据集文件。每个ARFF文件对应一个二维表格。表格的各行是数据集的各实例,各列是数据集的各个属性。下面是Weka自带的“weather.arff”文件,在Weka安装目录的“data”子目录下可以找到。 需要注意的是,在Windows记事本打开这个文件时,可能会因为回车符定义不一致而导致分行不正常。推荐使用UltraEdit这样的字符编辑软件察看ARFF文件的内容。% ARFF file for the weather data with some numric features% relation weather attribute outlook sunny, overcast, rainyattribute temperature realattribute humidity real attribute windy TRUE, FALSE attribute play yes, no data% % 14 instances% sunny,85,85,FALSE,nosunny,80,90,TRUE,noovercast,83,86,FALSE,yesrainy,70,96,FALSE,yesrainy,68,80,FALSE,yesrainy,65,70,TRUE,noovercast,64,65,TRUE,yessunny,72,95,FALSE,nosunny,69,70,FALSE,yesrainy,75,80,FALSE,yessunny,75,70,TRUE,yesovercast,72,90,TRUE,yesovercast,81,75,FALSE,yesrainy,71,91,TRUE,no文件结构识别ARFF文件的重要依据是分行,因此不能在这种文件里随意的断行。空行(或全是空格的行)将被忽略。以“%”开始的行是注释,WEKA将忽略这些行。如果你看到的“weather.arff”文件多了或少了些“%”开始的行,是没有影响的。除去注释后,整个ARFF文件可以分为两个部分。第一部分给出了头信息(Head information),包括了对关系的声明和对属性的声明。第二部分给出了数据信息(Data information),即数据集中给出的数据。从“data”标记开始,后面的就是数据信息了。头信息数据信息其他格式转换成ARFF虽然Weka也支持其他一些格式的文件,但是ARFF格式是支持的最好的。因此有必要在数据处理之前把数据集的格式转换成ARFF。CSV 将CSV转换为ARFF最迅捷的办法是使用WEKA所带的命令行工具。运行WEKA的主程序,在菜单中找到“Simple CLI”模块,它可提供命令行功能。在新窗口的最下方(上方是不能写字的):输入框写上java weka.core.converters.CSVLoader filename.csv filename.arff即可完成转换。 在WEKA 3.5中提供了一个“Arff Viewer”模块,我们可以用它打开一个CSV文件将进行浏览,然后另存为ARFF文件。 进入“Exploer”模块,从上方的按钮中打开CSV文件然后另存为ARFF文件亦可。C4.5与CSV文件类似。XLSExcel的XLS文件可以让多个二维表格放到不同的工作表(Sheet)中,我们只能把每个工作表存成不同的CSV文件。打开一个XLS文件并切换到需要转换的工作表,另存为CSV类型,点“确定”、“是”忽略提示即可完成操作。接下来把得到的CSV文件按照前述步骤转换为ARFF即可。MAT在Matlab中的二维表格是一个矩阵,我们通过这条命令把一个矩阵存成CSV格式。csvwrite(filename,matrixname)需要注意的是,Matllab给出的CSV文件往往没有属性名(Excel给出的也有可能没有)。而WEKA必须从CSV文件的第一行读取属性名,否则就会把第一行的各属性值读成变量名。因此我们对于Matllab给出的CSV文件需要用文本编辑软件打开,手工添加一行属性名。注意属性名的个数要跟数据属性的个数一致,仍用逗号隔开。取自/index.php/ARFF转自:/index.php/ARFF#.E6.96.87.E4.BB.B6.E7.BB.93.E6.9E.84转载:/user2/huangbo929/archives/2007/1789774.shtmlWeka初步文章分类:JavaEye 转载自/anqiang1984/archive/2009/04/01/4040571.aspx 从前年开始使用weka最数据挖掘方面的研究,到现在有一年半的时间了。看到我们同组的兄弟写了关于weka方面的总结,我也想整理一下。因为网上的资料实在是太少,记得刚接手的时候,真是硬着头皮看代码。不过到现在看来,也积累了很多的代码了。希望能够在这里跟大家分享一下学习weka的乐趣与经验。 Weka是来之新西兰怀卡托大学的一款开源软件,主要是数据挖掘方面的一些算法的集合。这款软件大概是当前数据挖掘领域最好的开源软件了,当然国外还有其它一些组织维护的有自己的开源软件,但是只有这款软件应用是比较广泛的了。具体关于weka的信息可以到官网去查看http:/www.cs.waikato.ac.nz/ml/weka/ ,软件的下载也可大家到官网去。 我是从weka3.4一直用到现在的3.6版本的,其间weka在图形界面上有一些变动,但是底层的框架结构没有太大的变化,主要是添加一些新的算法什么的。总之大家可以放心的使用。我现在积累的代码是从3.5版本积累下来的,到现在3.6版本,集成起来一点问题都没有,这大概也是我喜欢weka的一个原因。 数据挖掘的过程一般如下: 1. 读入训练、测试样本 2. 初始化分类器 3. 使用训练样本训练分类器 4. 使用测试样本测试分类器的学习效果 5. 打印分类结果 我们现在看看一个简单的实例 Java代码 package com.csdn; import java.io.File; import weka.classifiers.Classifier; import weka.classifiers.Evaluation; import weka.core.Instance; import weka.core.Instances; import weka.core.converters.ArffLoader; public class Test /* * param args */ public static void main(String args) / TODO Auto-generated method stub Instances ins = null; Classifier cfs = null; try /* * 1.读入训练、测试样本 * 在此我们将训练样本和测试样本作为同一个样本 */ File file= new File(C:Program FilesWeka-3-6datacontact-lenses.arff); ArffLoader loader = new ArffLoader(); loader.setFile(file); ins = loader.getDataSet(); /在使用样本之前一定要首先设置instances的classIndex,否则在使用instances对象是会抛出异常 ins.setClassIndex(ins.numAttributes()-1); /* * 2.初始化分类器 * 具体使用哪一种特定的分类器可以选择,请将特定分类器的class名称放入forName函数 * 这样就构建了一个简单的分类器 */ cfs = (Classifier)Class.forName(weka.classifiers.bayes.NaiveBayes).newInstance(); /* * 3.使用训练样本训练分类器 */ cfs.buildClassifier(ins); /* * 4.使用测试样本测试分类器的学习效果 * 在这里我们使用的训练样本和测试样本是同一个,在实际的工作中需要读入一个特定的测试样本 */ Instance testInst; /* * Evaluation: Class for evaluating machine learning models * 即它是用于检测分类模型的类 */ Evaluation testingEvaluation = new Evaluation(ins); int length = ins.numInstances(); for (int i =0; i length; i+) testInst = ins.instance(i); /通过这个方法来用每个测试样本测试分类器的效果 testingEvaluation.evaluateModelOnceAndRecordPrediction( cfs, testInst); /* * 5.打印分类结果 * 在这里我们打印了分类器的正确率 * 其它的一些信息我们可以通过Evaluation对象的其它方法得到 */ System.out.println( 分类器的正确率: + (1- testingEvaluation.errorRate(); catch(Exception e) e.printStackTrace(); package com.csdn; import java.io.File; import weka.classifiers.Classifier;import weka.classifiers.Evaluation;import weka.core.Instance;import weka.core.Instances;import weka.core.converters.ArffLoader; public class Test /* * param args */ public static void main(String args) / TODO Auto-generated method stub Instances ins = null; Classifier cfs = null; try /* * 1.读入训练、测试样本 * 在此我们将训练样本和测试样本作为同一个样本 */ File file= new File(C:Program FilesWeka-3-6datacontact-lenses.arff); ArffLoader loader = new ArffLoader(); loader.setFile(file); ins = loader.getDataSet(); /在使用样本之前一定要首先设置instances的classIndex,否则在使用instances对象是会抛出异常 ins.setClassIndex(ins.numAttributes()-1); /* * 2.初始化分类器 * 具体使用哪一种特定的分类器可以选择,请将特定分类器的class名称放入forName函数 * 这样就构建了一个简单的分类器 */ cfs = (Classifier)Class.forName(weka.classifiers.bayes.NaiveBayes).newInstance(); /* * 3.使用训练样本训练分类器 */ cfs.buildClassifier(ins); /* * 4.使用测试样本测试分类器的学习效果 * 在这里我们使用的训练样本和测试样本是同一个,在实际的工作中需要读入一个特定的测试样本 */ Instance testInst; /* * Evaluation: Class for evaluating machine learning models * 即它是用于检测分类模型的类 */ Evaluation testingEvaluation = new Evaluation(ins); int length = ins.numInstances(); for (int i =0; i length; i+) testInst = ins.instance(i); /通过这个方法来用每个测试样本测试分类器的效果 testingEvaluation.evaluateModelOnceAndRecordPrediction( cfs, testInst); /* * 5.打印分类结果 * 在这里我们打印了分类器的正确率 * 其它的一些信息我们可以通过Evaluation对象的其它方法得到 */ System.out.println( 分类器的正确率: + (1- testingEvaluation.errorRate(); catch(Exception e) e.printStackTrace(); 通过这个实例,我们可以看到在weka上做开发非常简单的,每个模块weka都提供了很好的支持。同时,我们可以在此基础上对weka进行一个简单的封装。设计一个Util类,将数据读取,以及分类器测试等功能放在这个Util类中共以后其它的程序使用。 获取样本Instances Java代码 /* * 从.arff文件中获取样本Instances; * 1.fileName instances的文件名 */ public static Instances getInstances(String fileName) throws Exception File file= new File(fileName); return getInstances(file); /* * 从.arff文件中获取样本Instances; * 1.file 获得instances的File对象 */ public static Instances getInstances(File file) throws Exception Instances inst = null; try ArffLoader loader = new ArffLoader(); loader.setFile(file); inst = loader.getDataSet(); catch(Exception e) throw new Exception(e.getMessage(); return inst; 获得一个Evaluation对象: /* * 获得一个Evaluation对象 * 1.h 一个已经训练过的分类器 * 2.ins 测试样本 */ public static Evaluation getEvaluation(Classifier h,Instances ins) try Instance testInst; /* * Evaluation: Class for evaluating machine learning models * 即它是用于检测分类模型的类 */ Evaluation testingEvaluation = new Evaluation(ins); int length = ins.numInstances(); for (int i =0; i length; i+) testInst = ins.instance(i); /通过这个方法来用每个测试样本测试分类器的效果 testingEvaluation.evaluateModelOnceAndRecordPrediction( h, testInst); return testingEvaluation; catch(Exception e) System.out.println(haha bug!); System.out.println(e); return null; /* * 从.arff文件中获取样本Instances; * 1.fileName instances的文件名 */ public static Instances getInstances(String fileName) throws Exception File file= new File(fileName); return getInstances(file); /* * 从.arff文件中获取样本Instances; * 1.file 获得instances的File对象 */ public static Instances getInstances(File file) throws Exception Instances inst = null; try ArffLoader loader = new ArffLoader(); loader.setFile(file); inst =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防工程测量施工方案
- 2025房地产公司合同终止协议书
- 2025至2031年中国后帮机拉簧油缸行业投资前景及策略咨询研究报告
- 水库防水施工方案设计
- 校长在初三二模教学质量分析会上讲话明确差距,对症下药,多方联动,分类推进,奋战60天
- 07【初中】【带班育人方略】《外烁内发三阶递进育博雅少年》
- 蒸汽吹灰器改造施工方案
- 唐山人工假山施工方案
- 2025至2030年中国轴承钢精线数据监测研究报告
- 凯美瑞前杠改色施工方案
- 印章使用登记台账
- T∕CACM 1075-2018 中医治未病技术操作规范 艾灸
- JTG∕T F30-2014 公路水泥混凝土路面施工技术细则
- 施工工地环保知识培训课件
- 旅行社挂靠合同协议书模板
- 2024年浙江金华市金义东轨道交通有限公司招聘笔试参考题库含答案解析
- EPC项目承包人施工方投资估算与设计方案匹配分析
- 体育心理健康与社会适应
- 化学工艺学试卷A
- 纺织智能制造技术应用分析报告
- 中药热奄包在急性肠炎治疗中的应用研究
评论
0/150
提交评论