签到
苹果/安卓/wp
苹果/安卓/wp
客户端
0.0
0.00
推广加币
数据VIP
升级SVIP
注册
|
登录
项目交易
CDA数据分析师
CDA网校
CDA社区
CDA认证考试
CDA俱乐部
CDA Live
在线教育
JG学术培训
经管云课堂
CDA网校
CDA数据分析研究院
统计软件培训
金融科技
就学培训网
经管题库
培训证书查询
成为签约讲师
经管文库
专家入驻
学术博客
就学平台
美国在职研究生
论坛BBS
服务一览
VIP服务
数据VIP
贵宾服务
数据库
兑换商城
广告服务
案例库
软件销售
校园代理
文献下载
会员课服务
我的
帖子
收藏
好友
我的空间
关注的人
关注的贴
找人
文库
任务
道具
勋章
网站地图
搜索
搜索
用户
人大经济论坛
›
标签
›
算法
标签: 算法
经管大学堂:名校名师名课
相关帖子
版块
作者
回复/查看
最后发表
使用MOEAs在存在典型的股票基准时表现优于股票基准 投资约束
外文文献专区
能者818
2022-3-7
0
436
能者818
2022-3-7 20:43:50
[推荐]智能优化算法及其应用
人工智能
wyz_ziwo
2009-6-10
8
5055
pbgpbg2003
2017-4-16 16:14:19
[下载]数据挖掘:概念、模型、方法和算法.pdf
版权审核区(不对外开放)
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
[下载]数据挖掘——概念、模型、方法和算法
数据分析与数据挖掘
maikenxi1983
2006-11-17
113
36420
良晨美景2012
2015-5-21 22:28:06
matlab用于数据挖掘的m语言算法源码
数据分析与数据挖掘
qwerhc
2007-3-16
41
19628
yua20062006
2014-12-5 21:39:08
一些算法,花30元买的,现送个各位
MATLAB等数学软件专版
llm885
2009-3-12
109
13621
348749523
2014-6-24 12:38:43
算法大全(50论币)
数据交流中心
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编的遗传算法优化神经网络的资料
MATLAB等数学软件专版
piaomiao2080
2008-6-20
71
15972
lonestone
2014-2-13 08:56:09
[免费]matbal遗传算法工具箱函数及实例讲解
MATLAB等数学软件专版
aleczh
2008-6-17
47
11741
三次成功
2013-12-18 19:25:50
非常有用的滤波算法:kalman filter 的几篇入门文章
计量经济学与统计软件
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
我也发一个 数据挖掘——模型 算法 原理
数据分析与数据挖掘
小河的小何
2008-3-6
54
9274
ctx6688
2013-3-14 22:01:32
[下载]遗传算法PPT-清华大学双语
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经典算法程序
MATLAB等数学软件专版
zhushiyou
2007-5-18
10
4666
get07
2011-11-26 08:18:00
[求助]遗传算法求解
计量经济学与统计软件
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
积分 0, 距离下一级还需 积分