最近在研究机器学习经典的分类算法随机森林,需要用随机森林算法来测试一个小的数据集。开源项目mahout实现了大多数经典的机器学习算法,里面也提供了很多处理数据,提取特征,训练算法模型的类和方法,但是貌似国内用这个开源项目的人并不多,因为网上关于具体如何使用mahout算法的资料廖若晨星,而mahout实战中也没有关于随机森林的使用例子,这部分信息只能从mahout官网中搜集到,而mahout官网中对随机森林的使用也并没有描述的很详细,于是博主在研究如何使用mahout随机森林时废了很大心力,最后发现,官网给出的mahout使用例子是用linux命令行直接运行jar包的方式来完成随机树的建模和测试的。
mahout随机树测试分为三个步骤:1.对数据生成对应的描述信息文件(这个生成的描述信息文件需要作为随机森林建模时的一个输入文件)。2.根据训练集及第一步生成的描述信息文件训练一个随机森林。3.用训练好的随机森林来测试数据。
第一步:对数据生成对应的描述信息文件,这个类位于mahout-examples-版本号-job.jar(注意一定要有job后缀,mahout下面还有一个mahout-examples-版本号.jar包,但是这个包里面的类并不全)的org.apache.mahout.classifier.df.tools.Describe,这个类里面有个主方法,因此可以在命令行直接运行这个类。你可以在hadoop环境下直接运行这个类对数据生成相应的描述文件,如下命令行:
$hadoop jar /usr/local/mahout-0.8/mahout-examples-0.8-job.jar(你的mahout-examples-版本号-job.jar这个包所在的路径) org.apache.mahout.classifier.df.tools.Describe -p /testdata/datatrain.csv(需要处理的目标数据,这里是在hdfs文件系统中的路径) -f /testdata/datatrain.info(生成的描述信息文件的存放路径,描述信息后缀为info) -d 20 N L(需要处理的目标数据的格式)
这里我来好好说一下这个-d后面的数据格式如何设置,其实这个非常简单,我们知道数据属性无非就两种,一种是数值型,还有一种是类别型。数值型就是纯代数值,比如工资收入,商品价格,商品数量等等,这些属性值在分类的时候只能定义区间去分类,这些就属于数值型属性。还有一类是种类型属性,这种类型的数据更像是枚举类型,因为它的所有情况都可以一一列举出来,比如对一个商品的评价good,bad,not bad,对是否具有某个特征的属性yes,no等等,一般是通过单词字符的形式来描述的,但是也有通过数字的形式来表示的,比如0,1,0表示no,1表示yes,虽然看起来好像是数字,但其实它们不是数值型,而是种类型,所以我们在分析数据时一定要搞清楚这些数据的类型到底是数值型还是种类型。
数值型属性我们用N表示(Numerical),种类型我们用C表示(Categories),如有一组数据为:
name age income adress commodity_numbe