1 / 12
文档名称:

机器学习决策树 ID3算法的源代码.docx

格式:docx   大小:16KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

机器学习决策树 ID3算法的源代码.docx

上传人:niupai11 2022/6/13 文件大小:16 KB

下载得到文件列表

机器学习决策树 ID3算法的源代码.docx

相关文档

文档介绍

文档介绍:机器学****决策树ID3算法的源代码上(VC6・0测试通过)
发布: 2009-4-16 11:42 | 作者: 天涯 | 来源: 资讯
[i=s] 本帖最后由 天涯 于 2009-4-17 13:03 编辑
这个的重要,不用多说了吧,有本数
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);
cout<<'\n'<<"叶子结点的个数为"<<leaves<<、n‘;
cout<<"^输入测试集文件名";
cin>>testname;
ifstream testfile;
(testname,ios::in|ios::nocreate);
if(!testfile){
cout<<"无法使用训练集,请重试<<‘\,;
exit(1);
}
count_test=0;
j=-1;
//读取测试集数据
while(testfile>>temp){
j=j+1;
k=j%(M+2);
if(k==0) count_test+=1;
switch(k){
case 0:test[count_test][7]=temp;
break;
case 1:test[count_test][1]=temp;
break;
case 2:test[count_test][2]=temp;
break;
case 3:test[count_test][3]=temp;
break;
case 4:test[count_test][4]=temp;
break;
case 5:test[count_test][5]=temp;
break;
case 6:test[count_test][6]=temp;
break;
}
}
();
for(i=1;i<=count_test;i++)
test[0]=0; //以确保评估分类准确率
cout<<"count_test="<<count_test<<'\n';
cout<<"count_train="<<count_train<<'\n';
//用测试集来评估分类准确率
for(i=1;i<=count_test;i++){
l=0;
for(j=1;j<=leaves;j++)
if(test[path_b[j][1]]==path_a[j][1]&&test[path_b[j][2]]==path_a[j][2]&&test[path_b[j][3] ]==path_a[j][3]&&test[path_b[j][4]]==path_a[j][4]&&test[path_b[j][5]]==path_a[j][5]&&test[path _b[j][6]]==path_a[j][6]){
l=1;
if(test[7]==path_a[j][0]) true_class+=1;
break;
}
if(test[7]==most && l==0) true_class+=1;
}
cout<<"^\ 试集与训练集的比例为"<<float(count_train )/count_test<<‘\n‘;
cout<<"分 类准确率为"<<float(true_class)/count_test<<'\n';
}
第二部分:
void Generate_decision_tree(int b[][M+2],int bn,int attribute_test_list[],int sn,int ai,int aj) {
〃定义数组a记录目前待分的训练样本集,定义数组记录目前要分结点中所含的训练样本集 〃same_class用来记数,判另^samples是否都属于同一个类
Trip+ = 1;〃用Trip记录每一个叶子递归次数
path_a[leaves][Trip]=ai;// 用 path_a[N][M+1],path_b[N][M+1]记录每一片叶子的路径 path_b[leaves][Trip]=aj;
int same_class,i,j,k,l,ll,lll;
if(bn==0) {//待分结点的样本集为空时,加上一个树叶,标记为训练集中最普通的类
//记录路径与前一路径相同的部分
for(i=1;i<Trip;i++)
if(pat