昨天决策树Partial Implementation实战演示了三个部分:1、Describe ;2、BuildForest;3、TestForest;
今天主要分析下Describe的源码,看下这个类做了什么事情。
打开Describe的源码可以看到这个类主要可以分为三个部分,如下:
(1)生成描述:
String descriptor = DescriptorUtils.generateDescriptor(description);
(2)生成dataset:
Dataset dataset = generateDataset(descriptor, dataPath, regression);
(3)存储dataset:
DFUtils.storeWritable(new Configuration(), fPath, dataset);
下面分别介绍:
第(1)步是把-d参数转换的,比如输入为:3 N I N N 2 C L 5 I,转换为N N N I N N C C L I I I I I;
第(2)步,生成dataset,首先先介绍下dataset:
Dataset有五个参数:atrribute,values, nbInstance,ignored,labelId;
(a) attribute主要存储的是把-d参数转换后的值,比如-d N 3 C 2 N C 4 N C 8 N 2 C 19 N L N,转换后为:NUMERICAL,CATEGORICAL,CATEGORICAL,CATEGORICAL,NUMERICAL,NUMERICAL,CATEGORICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,CATEGORICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,CATEGORICAL,CATEGORICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,NUMERICAL,CATEGORICAL,NUMERICAL;
(b) values主要存储的是Categorical的值,比如kdd的数据其中的values如下:
icmp,udp,tcp,
vmnet,shell,smtp,ntp_u,kshell,aol,imap4,urh_i,netbios_ssn,tftp_u,uucp,mtp,nnsp,echo,tim_i,ssh,iso_tsap,time,netbios_ns,systat,login,hostnames,efs,supdup,http_8001,courier,ctf,finger,nntp,ftp_data,red_i,ldap,http,pm_dump,ftp,exec,klogin,auth,netbios_dgm,other,link,X11,discard,private,remote_job,IRC,pop_3,daytime,pop_2,gopher,sunrpc,rje,name,domain,uucp_path,http_2784,Z39_50,domain_u,csnet_ns,eco_i,whois,bgp,sql_net,printer,telnet,ecr_i,urp_i,netstat,http_443,harvest,
S3,RSTR,SF,RSTO,SH,OTH,S2,RSTOS0,S1,REJ,S0,
1,0,
1,0,
1,0,
1,0,
phf,buffer_overflow,teardrop,guess_passwd,loadmodule,multihop,smurf,spy,normal,land,portsweep,back,warezclient,ftp_write,nmap,satan,rootkit,perl,imap,neptune,warezmaster,ipsweep,pod,
可以看出最后一行为Label的取值范围;
(c) nbInstance表示的是原始数据的样本数;
(d) ignored存储的是被忽略的属性,比如glass.data 被忽略的属性的id为0,(一般如果第一列属性是样本的id,则一般都被忽略)
(e) labeld存储的是Label所在的列,比如kdd的数据labelId为41;
第(3)步是把上面生成的dataset存入文件中,可以在类Dataset中查看write方法,如下:
out.writeInt(attributes.length); // nb attributes
for (Attribute attr : attributes) {
WritableUtils.writeString(out, attr.name());
}
for(int ig:ignored){
System.out.print(ig+",");
}
DFUtils.writeArray(out, ignored);
// only CATEGORICAL attributes have values
System.out.println("values:");
for (String[] vals : values) {
if (vals != null) {
WritableUtils.writeStringArray(out, vals);
}
}
out.writeInt(labelId);
out.writeInt(nbInstances);
上面的代码中的每个out.writeXxx(),就是把相关信息保存在文件中;
分享,成长,快乐
分享到:
相关推荐
mahoutAlgorithms源码分析 mahout代码解析
用于测试mahout中的决策树 ,即Partial Implementation用到的测试jar包。所谓的测试其实也只是把相应的数据可以打印出来,方便单机调试,理解算法实现原理而已。
Mahout是一个Java的机器学习库。Mahout的完整源代码,基于maven,可以轻易导入工程中
mahout,朴素贝叶斯分类,中文分词,mahout,朴素贝叶斯分类,中文分词,
Mahout in Action 源码,结合Mahout in Action 学习数据挖掘,比较容易理解
该资源是mahout in action 中的源码,适用于自学,可在github下载:https://github.com/tdunning/MiA
第三部分 功能主要包括四个方面:集群配置、集群算法监控、Hadoop模块、Mahout模块。 详情参考《Mahout算法调用展示平台2.1》
第二部分 功能主要包括四个方面:集群配置、集群算法监控、Hadoop模块、Mahout模块。 详情参考《Mahout算法调用展示平台2.1》
mahout-distribution-0.5-src.zip mahout 源码包
Chapter 1 Meet Mahout Chapter 2 Setting things up Part II — Coding with Mahout Chapter 3 In-core Algebra Chapter 4 Distributed Algebra Part III — Approximating Distributed Problems Chapter 5 ...
svd算法的工具类,直接调用出结果,调用及设置方式参考http://blog.csdn.net/fansy1990 <mahout源码分析之DistributedLanczosSolver(七)>
mahout 0.7 src, mahout 源码包, hadoop 机器学习子项目 mahout 源码包
mahout实战 源码 mahout实战 配套 mahout-distribution-0.5.tar.gz 版本
Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤...
mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout
mahout0.9的源码,支持hadoop2,需要自行使用mvn编译。mvn编译使用命令: mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests
maven_mahout_template-mahout-0.8
1 ■ Meet Apache Mahout 1 PART 1 RECOMMENDATIONS ...................................................11 2 ■ Introducing recommenders 13 3 ■ Representing recommender data 26 4 ■ Making ...
Thank you for requesting the download for Apache Mahout Cookbook. Please click the following link to download the code: