资源描述:
《matlab实现的C4.5分类决策树算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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_points]%%Outputs%D-Decisionsufrace%NOTE
2、:Inthisimplementationitisassumedthatafeaturevectorwithfewerthan10uniquevalues(theparameterNu)%isdiscrete,andwillbetreatedassuch.Othervectorswillbetreatedascontinuous[Ni,M]=size(train_features);inc_node=inc_node*M/100;Nu=10;%ForthedecisionregionN=region(5);mx=ones(N,1)*linspace(region(1),
3、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*(train_features-m*ones(1,M));;%flatxy=UW*(flatxy-m*ones(1,N^2));;%Findwhichoftheinputfeaturesarediscrete,anddiscretisi
4、zethecorresponding%dimensiononthedecisionregiondiscrete_dim=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('Buildingtree')tree=make_tree(tr
5、ain_features,train_targets,inc_node,discrete_dim,max(discrete_dim),0);%Makethedecisionregionaccordingtothetreedisp('Buildingdecisionsurfaceusingthetree')targets=use_tree(flatxy,1:N^2,tree,discrete_dim,unique(train_targets));D=reshape(targets,N,N);%ENDfunctiontargets=use_tree(features,ind
6、ices,tree,discrete_dim,Uc)%Classifyrecursivelyusingatreetargets=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);%Andclassifyacco
7、rdingtoitif(discrete_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_tree(fe