`
thecloud
  • 浏览: 880868 次
文章分类
社区版块
存档分类
最新评论

mahout决策树之Partial Implementation源码分析 part1

 
阅读更多

昨天决策树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(),就是把相关信息保存在文件中;




分享,成长,快乐




分享到:
评论

相关推荐

    mahout Algorithms源码分析

    mahoutAlgorithms源码分析 mahout代码解析

    mahout-core-0.7-job.jar

    用于测试mahout中的决策树 ,即Partial Implementation用到的测试jar包。所谓的测试其实也只是把相应的数据可以打印出来,方便单机调试,理解算法实现原理而已。

    Mahout源码

    Mahout是一个Java的机器学习库。Mahout的完整源代码,基于maven,可以轻易导入工程中

    mahout源码

    mahout,朴素贝叶斯分类,中文分词,mahout,朴素贝叶斯分类,中文分词,

    Mahout_In_Action(源码)

    Mahout in Action 源码,结合Mahout in Action 学习数据挖掘,比较容易理解

    mahout in action中的源码

    该资源是mahout in action 中的源码,适用于自学,可在github下载:https://github.com/tdunning/MiA

    Mahout算法调用展示平台2.1-part3

    第三部分 功能主要包括四个方面:集群配置、集群算法监控、Hadoop模块、Mahout模块。 详情参考《Mahout算法调用展示平台2.1》

    Mahout算法调用展示平台2.1-part2

    第二部分 功能主要包括四个方面:集群配置、集群算法监控、Hadoop模块、Mahout模块。 详情参考《Mahout算法调用展示平台2.1》

    mahout-distribution-0.5-src.zip mahout 源码包

    mahout-distribution-0.5-src.zip mahout 源码包

    Apache.Mahout.Beyond.MapReduce.1523775785

    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 mahout算法

    svd算法的工具类,直接调用出结果,调用及设置方式参考http://blog.csdn.net/fansy1990 <mahout源码分析之DistributedLanczosSolver(七)>

    mahout 0.7 src

    mahout 0.7 src, mahout 源码包, hadoop 机器学习子项目 mahout 源码包

    mahout-distribution-0.5.tar.gz + 源码

    mahout实战 源码 mahout实战 配套 mahout-distribution-0.5.tar.gz 版本

    MAHOUT源码包

    Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤...

    mahout api 学习资料

    mahout_help,mahout的java api帮助文档,可以帮你更轻松掌握mahout

    mahout0.9源码(支持hadoop2)

    mahout0.9的源码,支持hadoop2,需要自行使用mvn编译。mvn编译使用命令: mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests

    maven_mahout_template-mahout-0.8

    maven_mahout_template-mahout-0.8

    Mahout in Action

    1 ■ Meet Apache Mahout 1 PART 1 RECOMMENDATIONS ...................................................11 2 ■ Introducing recommenders 13 3 ■ Representing recommender data 26 4 ■ Making ...

    Apache Mahout Cookbook code

    Thank you for requesting the download for Apache Mahout Cookbook. Please click the following link to download the code:

Global site tag (gtag.js) - Google Analytics