tag 标签: 算法经管大学堂:名校名师名课

相关帖子

版块 作者 回复/查看 最后发表
使用MOEAs在存在典型的股票基准时表现优于股票基准 投资约束 外文文献专区 能者818 2022-3-7 0 436 能者818 2022-3-7 20:43:50
[推荐]智能优化算法及其应用 attachment 人工智能 wyz_ziwo 2009-6-10 8 5055 pbgpbg2003 2017-4-16 16:14:19
[下载]数据挖掘:概念、模型、方法和算法.pdf attachment digest 版权审核区(不对外开放) dt1234567890 2008-11-17 647 55895 ironyang82 2016-9-20 15:04:04
[求助]关于EVA中NOPAT的这种算法谁了解 会计与财务管理 brianzhanghao 2009-3-10 1 10945 初学小子 2016-7-27 11:34:43
[下载]数据挖掘——概念、模型、方法和算法 attachment 数据分析与数据挖掘 maikenxi1983 2006-11-17 113 36420 良晨美景2012 2015-5-21 22:28:06
matlab用于数据挖掘的m语言算法源码 attachment 数据分析与数据挖掘 qwerhc 2007-3-16 41 19628 yua20062006 2014-12-5 21:39:08
一些算法,花30元买的,现送个各位 attachment MATLAB等数学软件专版 llm885 2009-3-12 109 13621 348749523 2014-6-24 12:38:43
算法大全(50论币) attachment 数据交流中心 wjjmath 2012-8-27 4 2657 紫霄香榭 2014-6-7 18:01:11
[推荐]数据挖掘的算法 数据分析与数据挖掘 420948492 2009-5-10 43 9167 liuyu2008 2014-2-17 16:23:39
[分享]马上毕业了,共享点matlab编的遗传算法优化神经网络的资料 attachment MATLAB等数学软件专版 piaomiao2080 2008-6-20 71 15972 lonestone 2014-2-13 08:56:09
[免费]matbal遗传算法工具箱函数及实例讲解 attachment MATLAB等数学软件专版 aleczh 2008-6-17 47 11741 三次成功 2013-12-18 19:25:50
非常有用的滤波算法:kalman filter 的几篇入门文章 attachment 计量经济学与统计软件 sphinx_xzw 2008-5-22 8 7231 gengyingtao 2013-10-15 10:38:25
apriori跑的太慢!别的算法行么? SPSS论坛 complicated 2012-8-28 8 4988 complicated 2013-4-25 17:49:28
我也发一个 数据挖掘——模型 算法 原理 attachment 数据分析与数据挖掘 小河的小何 2008-3-6 54 9274 ctx6688 2013-3-14 22:01:32
[下载]遗传算法PPT-清华大学双语 attachment SPSS论坛 zanshenshi 2008-8-31 11 7017 奈何雾霭 2013-1-28 00:21:24
[求助]关于gibbs抽样算法 MATLAB等数学软件专版 shmily2007 2008-10-16 5 6150 lightingstar 2012-6-29 15:18:34
MATLAB经典算法程序 attachment MATLAB等数学软件专版 zhushiyou 2007-5-18 10 4666 get07 2011-11-26 08:18:00
[求助]遗传算法求解 attachment 计量经济学与统计软件 dieme 2009-3-31 5 3250 buqinghuan 2009-4-4 20:38:00
[求助]sas里或者matlab里如何实现adaboost算法? SAS专版 雪隼 2008-4-17 0 2782 雪隼 2008-4-17 14:17:00

相关日志

分享 ID3算法基于C++实现
邪魔至尊 2012-9-16 11:47
#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 ={3,3,2,3,4,2}; int s ,a ; //数组s 用来记录第i个训练样本的第j个属性值 int path_a ,path_b ; //用path_a ,path_b 记录每一片叶子的路径 int count_list=M; //count_list用于记录候选属性个数 int count=-1; //用count+1记录训练样本数 int attribute_test_list1 ; int leaves=1; //用数组ss 表示第k个候选属性划分的子集Sj中类Ci的样本数,数组的具体大小可根据给定训练数据调整 int ss ; //第k个候选属性划分的子集Sj中样本属于类Ci的概率 double p ; //count_s 用来记录第i个候选属性的第j个子集中样本个数 int count_s ; //分别定义E ,Gain 表示熵和熵的期望压缩 double E ; double Gain ; //变量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 ,testname ; int test ; void Generate_decision_tree(int b ,int bn,int attribute_test_list =temp; break; case 1:s =temp; break; case 2:s =temp; break; case 3:s =temp; break; case 4:s =temp; break; case 5:s =temp; break; case 6:s =temp; break; case 7:s =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 ; } //most记录训练集中哪类样本数比较多,以用于确定递归终止时不确定的类别 for(i=0,j=0,k=0;i=count;i++){ if(s ==0) j+=1; else k+=1; } if(jk) most=0; else most=1; //count_train记录训练集的样本数 count_train=count+1; //训练的属性 for(i=0;iM;i++) attribute_test_list1 =i+1; //首次调用递归函数,即是生成根结点的分支 Generate_decision_tree(s,count+1,attribute_test_list1,count_list,0,0); cout'\n'"叶子结点的个数为:"leaves'\n'; cout"请输入测试集文件名:"; cintestname; ifstream testfile; testfile.open(testname,ios::in|ios::nocreate); if(!testfile){ cout"无法使用训练集,请重试!"'\n'; exit(1); } count_test=0; j=-1; //读取测试集数据 while(testfiletemp){ j=j+1; k=j%(M+2); if(k==0) count_test+=1; switch(k){ case 0:test =temp; break; case 1:test =temp; break; case 2:test =temp; break; case 3:test =temp; break; case 4:test =temp; break; case 5:test =temp; break; case 6:test =temp; break; } } testfile.close(); for(i=1;i=count_test;i++) test =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_a test ]==path_a test ]==path_a test ]==path_a test ]==path_a test ]==path_a ){ l=1; if(test ==path_a ) true_class+=1; break; } if(test ==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 ,int bn,int attribute_test_list =ai;//用path_a ,path_b 记录每一片叶子的路径 path_b =aj; int same_class,i,j,k,l,ll,lll; if(bn==0) {//待分结点的样本集为空时,加上一个树叶,标记为训练集中最普通的类 //记录路径与前一路径相同的部分 for(i=1;iTrip;i++) if(path_a ==0){ path_a =path_a ; path_b =path_b ; } cout'\n'"IF "; for(i=1;i=Trip;i++) if(i==1) cout"a "]="path_a ; else cout"^a "]="path_a ; cout" THEN class="most; path_a =most; //修改树的深度 if(path_a ==av -1]) for(i=Trip;i1;i--) if(path_a ==av -1]) Trip-=1; else break; Trip-=1; leaves+=1; } else { same_class=1; for(i=0;ibn-1;i++) if(b ==b ) same_class+=1; if(same_class==bn){//待分样本集属于同一类时以该类标记 //记录路径与前一路径相同的部分 for(i=1;iTrip;i++) if(path_a ==0){ path_a =path_a ; path_b =path_b ; } cout'\n'"IF "; for(i=1;i=Trip;i++) if(i==1) cout"a "]="path_a ; else cout"^a "]="path_a ; cout" THEN class="b ; path_a =b ; //修改树的深度 if(path_a ==av -1]) for(i=Trip;i1;i--) if(path_a ==av -1]) Trip-=1; else break; Trip-=1; leaves+=1; //未分类的样本集减少 for(i=0,l=-1;i=count;i++){ for(j=0,lll=0;jbn;j++) if(s ==b ) lll++; if(lll==0){ l+=1; for(ll=0;llM+2;ll++) a =s ; } } for(i=0,k=-1;il;i++){ k++; for(ll=0;llM+2;ll++) s =a ; } count=count-bn; } else { if(sn==0){//候选属性集为空时,标记为训练集中最普通的类 //记录路径与前一路径相同的部分 for(i=1;iTrip;i++) if(path_a ==0){ path_a =path_a ; path_b =path_b ; } cout'\n'"IF "; for(i=1;i=Trip;i++) if(i==1) cout"a "]="path_a ; else cout"^a "]="path_a ; //判断类别 for(i=0,ll=0,lll=0;ibn;i++){ if(b ==0) ll+=1; else lll+=1; } if(lllll) { cout" THEN class=0"; path_a =0; } else { cout" THEN class=1"; path_a =1; } //修改树的深度 if(path_a ==av -1]) for(i=Trip;i1;i--) if(path_a ==av -1]) Trip-=1; else break; Trip-=1; leaves+=1; //未分类的样本集减少 for(i=0,l=-1;i=count;i++){ for(j=0,lll=0;jbn;j++) if(s ==b ) lll++; if(lll==0){ l+=1; for(ll=0;llM+2;ll++) a =s ; } } for(i=0,k=-1;il;i++){ k++; for(ll=0;llM+2;ll++) s =a ; } count=count-bn; } else//待分结点的样本集不为空时 { //定义count_Positive记录属于正例的样本数 int count_Positive=0; //p1,p2分别定义为正负例的比例 double p1,p2; double Entropy_Es; //Entropy_Es表示熵 for(i=0;i=count;i++) if(s ==1) count_Positive+=1; p1=double(count_Positive)/(count+1); p2=1-p1; Entropy_Es=-p1*log10(p1)/log10(2)-p2*log10(p2)/log10(2); coutp1'\t'p2'\t'Entropy_Es'\n'; //************************************************************************** //初始化 for(i=0;isn;i++)//当前的属性包含的个数 for(j=0;jc;j++)//类别 for(k=0;kav ;k++)//以当前属性分成的小类(每个属性包含的种类数) ss -1] =0; //用数组ss 表示第k个候选属性划分的子集Sj中类Ci的样本数,数组的具体大小可根据给定训练数据调整 for(i=0;isn;i++) for(j=0;jav ;j++) count_s -1] =0;//初始化某个属性的某个具体值的全部个数 for(i=0;icount+1;i++) for(j=1;j=sn;j++) if(s ==0){//找出每个属性具体某个值属于反例的个数 ss -1] -1]+=1; count_s -1] -1]+=1; } else { ss -1] -1]+=1; count_s -1] -1]+=1; } //计算分别以各个候选属性划分样本后,各个子集Sj中的样本属于类Ci的概率 for(i=0;isn;i++) for(j=0;jc;j++) for(k=0;kav ;k++) if(count_s -1] !=0) p -1] =double(ss -1] )/count_s -1] ; for(i=0;isn;i++) E -1]=0.0; //计算熵 for(i=0;isn;i++) for(j=0;jav -1];j++){ //if语句处理0*log10(0)=0 if(p -1] ==0||p -1] ==0) { p -1] =1; p -1] =1; } E -1]+=(ss -1] +ss -1] )*(-(p -1] *log10(p -1] )/log10(2)+p -1] *log10(p -1] )/log10(2)))/(count+1); } //计算熵的信息增益 for(i=0;isn;i++) Gain -1]=Entropy_Es-E -1]; //找出信息增益的最大值,用j记录哪个候选属性的信息增益最大 max_Gain=Gain ; j=attribute_test_list -1; for(i=0;isn;i++)//找出最大的信息增益 if(max_GainGain -1]) { max_Gain=Gain -1]; j=attribute_test_list -1; } //利用得到的具有最大信息增益的属性来划分待分的样本集b int temp ; int b1 ; int temp1=-1; int temp_b ; for(i=1;i=av ;i++){ temp =-1; for(k=0;kbn;k++)//样本的个数 if(b ==i){ temp +=1; for(l=0;lM+2;l++) temp_b ] =b ; } } //对于每一个分支使用递归函数重复生成树 for(i=1;i=av ;i++){ for(k=0;k=temp ;k++) for(l=0;lM+2;l++) b1 =temp_b ; if(i==1){ for(ll=0,l=0;llsn;ll++) if(attribute_test_list -1!=j) attribute_test_list =attribute_test_list ; Generate_decision_tree(b1,k,attribute_test_list,l,i,j+1); sn-=1; } else { Generate_decision_tree(b1,k,attribute_test_list,sn,i,j+1); if(i==av ) attribute_test_list =j+1; } } } } } }
个人分类: 数据挖据|0 个评论

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 12:26