资源描述:
《matlab实现的C45分类决策树算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、functionD=C4_5(train_featuresAtrain_targetszinc_node,region)%ClassifyusingQuinlan*sC4・5algorithm%Inputs:%features-Trainfeatures%targets-Traintargets%inc_node-Percentageofincorrectlyassignedsamplesatanode%region一Decisionregionvector:[—xx-yynumber_of_points]%%Outputs%D一Decisionsufrace%NOTE:Inthis
2、implementAtionitisassumedthatafeaturevectorwithfewerthan10uniquevalues(theparameterNu)%isdiscrete,andwillbetreatedassuch・Othervectorswillbetreatedascontinuous[NizM]inc_nodeNu=size(train_features);=inc_node*M/100;=10;%ForthedecisionregionN=region(5);mx=ones(Nf1)*linspace(region(1),region(2),N);m
3、y=linspace(region(3),region(4),N)ones(1rN);flatxy=[mx(:),my(:)]1;%Preprocessing%[frtrUW,m]=PCA(train_features,train_t^rg㊀ts,Ni,region);%train_features=UW*(train_features一m*ones(1,M));;%Findwhichoftheinputfeaturesarediscrete,anddiscretisizethecorresponding%dimensiononthedecisionregiondiscrete_di
4、m=zeros(1,Ni);fori=1:Ni,Nb=length(unique(train_features(i,:)));if(Nb<=Nu),%Thisisadiscretefeaturediscrete_dim(i)=Nb;[H,flatxy(i,:)]=high_histogram(flatxy(i,:),Nb);endend%Buildthetreerecursivelydisp(1Buildingtree!)tree=make_tree(train_features,train_targets,inc_node,discrete_dim,max(discrete_dim
5、),0);%Makethedecisionregionaccordingtothetreedisp('Bui丄dingdecisionsurfaceusingthetree1)targets=use_tree(flatxy,1:N^2,tree,discrete_dim,unique(train_targets));D=reshape(targets,N,N);%ENDfunctiontargets=use_tree(features,indices,tree,discrete_dim,Uc)%Classifyrecursivelyusingatreetargets=zeros(1,
6、size(features,2));if(tree.dim==0)%Reachedtheendofthetreetargets(indices)=tree.child;breakend%ThisisnotthelastlevelofthetreeAso:%First,findthedimensionwearetoworkondim=tree.dim;dims=1:size(features,1);%Andclassifyaccordingtoitif(discrete_dim(dim)==0),%Continuousfeaturein=indices(find(features(di
7、m,indices)<=tree・sp丄);targets=targets+use_tree(features(dims,:),in,tree・chi]_d(l),discrete_dim(dims),Uc);in=indices(find(features(dim,indices)>tree・sp]_it_J_oc));targets=targets+use_tree(features(dims,:),in,tree.chi丄d(2))discrete_