资源描述:
《matlab实现的C4.5分类决策树算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.functionD=C4_5(train_features,train_targets,inc_node,region)%ClassifyusingQuinlan'sC4.5algorithm%Inputs:%features-Trainfeatures%targets-Traintargets%inc_node-Percentageofincorrectlyassignedsamplesatanode%region-Decisionregionvector:[-xx-yynumber_of_
2、points]%%Outputs%D-Decisionsufrace%NOTE:Inthisimplementationitisassumedthatafeaturevectorwithfewerthan10uniquevalues(theparameterNu)%isdiscrete,andwillbetreatedassuch.Othervectorswillbetreatedascontinuous[Ni,M]=size(train_features);inc_node=inc_node*
3、M/100;Nu=10;%ForthedecisionregionN=region(5);mx=ones(N,1)*linspace(region(1),region(2),N);my=linspace(region(3),region(4),N)'*ones(1,N);flatxy=[mx(:),my(:)]';..%Preprocessing%[f,t,UW,m]=PCA(train_features,train_targets,Ni,region);%train_features=UW*(
4、train_features-m*ones(1,M));;%flatxy=UW*(flatxy-m*ones(1,N^2));;%Findwhichoftheinputfeaturesarediscrete,anddiscretisizethecorresponding%dimensiononthedecisionregiondiscrete_dim=zeros(1,Ni);fori=1:Ni,Nb=length(unique(train_features(i,:)));if(Nb<=Nu),%
5、Thisisadiscretefeaturediscrete_dim(i)=Nb;[H,flatxy(i,:)]=high_histogram(flatxy(i,:),Nb);endend%Buildthetreerecursivelydisp('Buildingtree')tree=make_tree(train_features,train_targets,inc_node,discrete_dim,max(discrete_dim),0);%Makethedecisionregionacc
6、ordingtothetreedisp('Buildingdecisionsurfaceusingthetree')targets=use_tree(flatxy,1:N^2,tree,discrete_dim,unique(train_targets));D=reshape(targets,N,N);%END..functiontargets=use_tree(features,indices,tree,discrete_dim,Uc)%Classifyrecursivelyusingatre
7、etargets=zeros(1,size(features,2));if(tree.dim==0)%Reachedtheendofthetreetargets(indices)=tree.child;breakend%Thisisnotthelastlevelofthetree,so:%First,findthedimensionwearetoworkondim=tree.dim;dims=1:size(features,1);%Andclassifyaccordingtoitif(discr
8、ete_dim(dim)==0),%Continuousfeaturein=indices(find(features(dim,indices)<=tree.split_loc));targets=targets+use_tree(features(dims,:),in,tree.child(1),discrete_dim(dims),Uc);in=indices(find(features(dim,indices)>tree.split_loc));targets=targets+use_tr