没有合适的资源?快使用搜索试试~ 我知道了~
机器学习决策树-ID3算法的源代码.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 52 浏览量
2022-11-24
13:54:02
上传
评论
收藏 25KB DOCX 举报
温馨提示
试读
12页
。。。
资源推荐
资源详情
资源评论
机器学习决策树 ID3算法的源代码(VC6.0)
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<iomanip.h>
#define N 500 //N定义为给定训练数据的估计个数
#define M 6 //M定义为候选属性的个数
#define c 2 //定义 c=2个不同类
#define s_max 5 / /定义 s_max为每个候选属性所划分的含有最大的子集数
int av[M]={3,3,2,3,4,2};
int s[N][M+2],a[N][M+2]; //数组 s[j]用来记录第 个训练样本的第 个属性值
i
j
用
记录每一片叶子的路径
int path_a[N][M+1],path_b[N][M+1]; // path_a[N][M+1],path_b[N][M+1]
int count_list=M; //count_list
用于记录候选属性个数
用
记录训练样本数
int count=-1; // count+1
int attribute_test_list1[M];
int leaves=1;
//
用数组
ss[k][j]
表示第 个候选属性划分的子集 中类
Ci
的样本数,数组的具体大小可根据给定训练数据调整
Sj
k
int ss[M][c][s_max];
第 个候选属性划分的子集 中样本属于类 的概率
Sj Ci
//
k
double p[M][c][s_max];
用来记录第 个候选属性的第 个子集中样本个数
//count_s[j]
i
j
int count_s[M][s_max];
//
分别定义
,
表示熵和熵的期望压缩
E[M] Gain[M]
double E[M];
double Gain[M];
//
变量
max_Gain
用来存储最大的信息增益
double max_Gain;
用
记录每一个叶子递归次数
int Trip=-1; // Trip
int most;
void main(void)
{
int i,j=-1,k,temp,l,count_test,true_class=0,count_train;
char trainname[256],et stname[256];
int test[N][8];
cout<<"
请输入训练集文件名
:";
cin>>trainname;
ifstream trainfile;
trainfile.open(trainname,ios::in|ios::nocreaet);
if(!trainfile){
cout<<"
无法使用训练集,请重试
!"<<'\n';
exit(1);
}
//
读取训练集
while(trainfile>>temp){
j=j+1;
k=j%(M+2);
if(k==0||j==0) count+=1;
为训练集的第几个 代表室第几个属性
,k
//count
switch(k){
case 0:s[count][0]=temp;
break;
case 1:s[count][1]=temp;
break;
case 2:s[count][2]=temp;
break;
case 3:s[count][3]=temp;
break;
case 4:s[count][4]=temp;
break;
case 5:s[count][5]=temp;
break;
case 6:s[count][6]=temp;
break;
case 7:s[count][7]=temp;
break;
}
}
trainfile.close();
//
输出训练集
for(i=0;i<=count;i++){
if(i%2==0) cout<<'\n';
for(j=0;j<M+2;j++)
cout<<setw(4)<<s[j];
}
//most
记录训练集中哪类样本数比较多,以用于确定递归终止时不确定的类别
for(i=0,j=0,k=0;i<=count;i++){
if(s[0]==0) j+=1;
else k+=1;
}
if(j>k) most=0;
else most=1;
//count_train
记录训练集的样本数
count_train=count+1;
//
训练的属性
for(i=0;i<M;i++)
attribute_test_list1=i+1;
//
首次调用递归函数,即是生成根结点的分支
Generate_decision_tree(s,count+1,attribute_test_list1,count_list,0,0);
剩余11页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8255
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mmexport1714832730470.jpg
- 第8次课作业.md
- 过客软件园_1.1.apk
- boboav_night.apk
- 235486247769308自带键盘安卓海贼.apk
- 672536945416276wap.stuzn.com_1000_1137350andme_signed.apk
- 737836185360652wap.stuzn.com_1000_1642030hzw_n73d.apk
- JavaWeb阶段综合项目的接口文档
- 003 登录rsa+token 登录rsa+token(需改善 私钥不应该硬编码在类中、密码应该存储为哈希值)
- 992475461755466幼稚园春游功能版.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功