决策树算法 c4.5 c语言,C4.5决策树生成算法示例程序.PDF

该程序示例展示了如何使用Hadoop来实现C4.5决策树生成算法,适用于离散属性数据集。用户需自行实现剪枝过程及处理连续属性。程序已通过Car数据集验证,输出为规则集。运行步骤包括编译JAR包、准备元文件和训练数据,最后通过Hadoop命令运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C4.5决策树生成算法示例程序.PDF

C4.5决决策策树树生生成成算算法法示示例例程程序序

本程序演示了如何使用Hadoop来实现C4 .5决策树生成算法。

注注意意::本程序只演示了原始决策树的生成算法实现,剪 过程需要感兴趣的读者自己实现。另外,本程序目前只能处理离散

属性,对于连续属性,还请读者自己修改程序完成。算法实现的基本思路和原理已经在书中得到详细阐述,请读者同时参考

书中的原理介绍。算法的正确性在Car数据集和C4 .5参考实现程序上验证过。在使用C4 .5程序验证时,通过它输出的未剪 的

树的调试信息来比照,确定MapReduce输出的树结构和C4 .5生成的是一致的。

文文件件组组织织结结构构

src - 源代码目录

datatype - 数据结构

NodeStatisticInfo.java 节点统计信息

Rule .java 决策树节点规则描述

StatisticRecord .java 一条统计信息

program - 主要程序

DecisionTreeDriver.java 驱动类

DecisionTreeMapper.java Mapper类

DecisionTreeReducer.java Reducer类

test-data - 上的例子数据

names 属性值域信息

data 训练集数据

model 示例模型输出

run.sh - 示例运行脚本

使使用用方方法法

编编译译

将src下面的代码导入Eclipse或NetBeans等IDE 中 (或者编写Makefile等),将Hadoop相关库加入工程的依赖条件中进行编

译,打包成dtree.j ar这样的JAR包即可。

运运行行

将数据准备好 (格式等见数据准备部分),然后以如下命令运行程序:

hadoop jar dtree .jar program .DecisionTreeDriver metaFile dataSet ath workingDir modelFile

参数含义如下:

meta ile 记录属性值域信息的元文件的路径,

dataSetPath 数据集文件 (夹)所在路径,

workingDir 临时的工作空间文件夹,

model ile 模型文件的输出路径

数数据据准准备备

输输入入数数据据

训训练练集集元元文文件件 包含了各个属性的值域信息,文件的每一行代表一个属性的信息。每个属性的各个可能取值,使用逗号分隔。

例如在书上的例子中,第一个属性是年龄Age信息。那么在元文件的第一行内容为:

youth,middle,senior

注注意意 每一行的信息中不包括类标签,逗号左右不能有空格。

最后一个属性将被认为是类标签。示例文件请见test-data/names。

训训练练集集文文件件 ((夹夹)) 描述了参与训练的数据。训练集文件 (夹)即可以是单个HD S上的文件,也可以是HD S上的一个文件

夹。对于文件夹,程序会处理其中所有的文件。训练文件的每一行都代表了一个元组 (或者说是训练样本),该元组中的各

个字段使用','分隔。比如以书上给出的示例训练集为例,其第一个元组在文件中的表示如下:

youth,high,no,fair,no

它表示了该元组的5个属性 (age 、income 、student 、credit 、buy )的取值依次是youth 、high 、no 、fair 、no 。其中最后一个

属性buy是类标签。

注注意意 逗号左右不能有空格。示例文件见test-data/data。

程程序序输输出出

临临时时的的工工作作空空间间文文件件夹夹 程序运行中会产生一系列的临时HD S文件,都将放与于该文件夹下。运行前删除上一次运行时产生

的文件夹内容,以确保该文件夹在运行前不存在。

模模型型文文件件 程序将把决策树模型输出为一组规则集。规则集中的每任意一条规则都对应于原决策树中的一个叶子节点。通过将

元组与规则进行匹配,就知道该元组最终会落入哪个叶子节点。C4 .5决策树生成算法本身的性质保证了规则集的一致性,即

对于任意一条有效的元组,其最多符合规则集中的一条规则,并且至少满足规则集中的一条规则。在文件中,每一条规则占

据一行,其具有如下的形式:

:类标签

其中“规则”部分的结构是:属性ID,属性取值&属性ID2,属性取值2& ...,比如

1,youth&3,yes:yes

就表示了(age == youth) && (student == yes ) ->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值