www.gusucode.com > 决策树matlab源码程序 > ID3.m

    function ID3(data)
x=length(data.sx);   %属性个数(条件属性和决策属性)
for i=1:x-1          %条件属性
rs(i)=gain(data,i);  
sgain(i)=rs(i).gain; %计算每个属性的gain
end
mgain=max(sgain);    %找到最大的gain
for i=1:x-1
    if mgain==rs(i).gain
        shuxing=data.sx{i};
        dt=rs(i).dat;
        cel=rs(i).cel;
    end
end
ds=length(cel);
for i=1:ds
    f=isye(dt(i).data);
    if f.ye==1
        gz=['if ',shuxing,'=',cel{i},' then ',data.sx{x},'=',f.value];
        disp(gz)
    else
        hz=['if ',shuxing,'=',cel{i},' and '];
        disp(hz)
        ID3(dt(i).data);
    end
end

%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%判断是否为叶子节点
function f=isye(data)
es=ES(data);x=length(data.sx);
if es==0
    f.ye=1;
    f.value=data.svalue{1}{x};
else
    f.ye=0;
end