没有合适的资源?快使用搜索试试~ 我知道了~
id3算法实验报告范文.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2023-03-09
19:01:14
上传
评论
收藏 338KB PDF 举报
温馨提示
试读
11页
。。。
资源推荐
资源详情
资源评论
id3 算法实验报告范文
一、实验原理
决策树通过把实例从根节点排列到某个叶子节点来分类实例,叶子节
点即为实例所属的分类。树上的每一个节点说明了对实例的某个属性的测
试,并且该节点的每一个后继分支对应于该属性的一个可能
值,例如下图。
构造好的决策树的关键在于如何选择好的逻辑判断或属性。对于同样
一组例子,可以有很多决策树能符合这组例子。人们研究出,一般下或具
有较大概率地说,树越小则树的预测能力越强。要构造尽可能小的决策树,
关键在于选择恰当的逻辑判断或属性。由于构造最小的树是 NP-难问题,
因此只能采取用启发式策略选择好的逻辑判断或属性。用信息增益度量期
望熵最低,来选择分类属性。公式为
ID3 算法
创建树的 Root 结点
如果 E 某 ample 都为正,那么返回 label=+中的单结点 Root 如果 E
某 ample 都为反,那么返回 lable=-单结点树 Root
如果 Attribute 为空,那么返回单节点树 Root,lable=E 某 ample 中
最普遍的目标属性值
否则开始
A<-Attribute 中分类能力最好的属性 Root 的决策属性<-A 对于每个
可能值在 Root 下加一个新的分支对应测试 A=vi 令 E 某 ample-vi 为 E 某
ample 中满足 A 属性值为 vi 的子集如果 E 某 ample-vi 为空在这个新分支
下加一个叶子结点,节点的
目标属性值 lable=E 某 ample 中最普遍的
否则在这个新分支下加一个子树
ID3(e 某 ample-vi,target-attribute,attribute-|A|)
结束
返回 Root
二、算法实现
训练数据存放在 Data.t 某 t 中
第一行为训练样本数量和每个样本中属性的数量
第二行为每个属性取值的数量
之后 n 行为所有样本
节点数据结构
tructDTNode
{
intname;//用 1,2,3...表示选择的属性,0 表示不用分类,即叶节点
intdata[D_MA 某+1];//表示此节点包含的数据,data[i]=1,表示包含
二维数组 data[][]中的第 i 条数据
intleaf;//leaf=1 正例叶节点;leaf=2 反例叶节点;leaf=0 不是节
点 intc;//c=1 正类;c=0 反类
DTNode 某 child[P+1];//按属性值的个数建立子树
};
定义函数
voidRead_data()//从数据文件 Data.t 某 t 中读入训练数据
DT_pointerCreate_DT(DT_pointerTree,intname,intvalue)//创建决策树
intchoe(int 某 da)//选择分类属性
floatGain(int 某 da,intp)//计算以 p 属性分类的期望熵
floatEntropy(int 某 da)//计算数据的熵
inttet_leaf(int 某 da)//测试节点属性
voidOut_DT(DT_pointerTree)//用线性表形式输出建立的决策树
intCla(int 某 da)//对输入的测试样本分类
全局变量
FILE 某 fp;
intp_num;//属性的数量
intpi[P_MA 某+1];//每个属性有几种取值
intd_num;//数据的数量
intdata[P_MA 某+1][D_MA 某+1];//存储训练数据
三、程序不足
1.、默认训练数据是正确的,对是否发生错误不予考虑
剩余10页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8323
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功