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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
机器学习决策树 ID3算法的源代码上(VC6.0测试通过) #includeiostream.h #includefstream.h #includestring.h #includestdlib.h #includemath.h #includeiomanip.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]表示第k个候选属性划分的子集Sj中类Ci的样本数,数组的具体大小可根据给定训练数据调整 int ss[M][c][s_max];?? //第k个候选属性划分的子集Sj中样本属于类Ci的概率 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],testname[256]; ? ? int test[N][8]; ? ? cout请输入训练集文件名:; ? ? cintrainname; ? ? ifstream trainfile; ? ? trainfile.open(trainname,ios::in|ios::nocreate); ? ? if(!trainfile){ ? ?? ???cout无法使用训练集,请重试!\n; ? ?? ???exit(1); ? ? } ? ? //读取训练集 ? ? while(trainfiletemp){ ? ?? ? j=j+1; ? ?? ? k=j%(M+2); ? ?? ? if(k==0||j==0) count+=1; ? ?? ? //count为训练集的第几个,k代表室第几个属性 ? ?? ? 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;jM+2;j++) ? ?? ?? ?? ?coutsetw(4)s[j]; ? ? } ? ? //most记录训练集中哪类样本数比较多,以用于确定递归终止时不确定的类别 ? ? for(

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档