《统计学习方法》matlab计算决策树信息增益

function [ empEnt ] = expEnt( A )
%计算列向量的经验熵
empEnt=0;
list=unique(A);
l=length(list);
for i=1:l
    Length=length(find(A==list(i)));
    p=Length/length(A);
    empEnt=empEnt-p*log2(p);
end


end

function [ ecEnt ] = Ecent( A,B,emEnt)
%计算经验条件熵
ecEnt=emEnt;
Lengh_A=length(A);
list=unique(A);
Length=length(list);
for i=1:Length
    loc=find(A==list(i));
    L=length(loc);
    Save=zeros(L,1);
    for j=1:L
        Save(j)=B(loc(j));
    end
   ecEnt=ecEnt-expEnt(Save)*L/Lengh_A;
end
end

function [Ecents] = Ecents( A )
%显示所有经验条件熵
size_A=size(A);
list_A=A(:,size_A(2));
empEnt=expEnt(list_A);
Ecents=zeros((size_A(2)-1),1);
for i=1:size_A(2)-1
    data=A(:,i);
    Ecents(i)=Ecent(data,list_A,empEnt);
end
    


end

三段代码用来计算P75的信息增益,第一段是经验熵,第二段是单独列的经验条件熵,第三段是显示所有经验条件熵。需要预处理数据,做成矩阵形式。

你可能感兴趣的:(决策树,学习方法,机器学习,matlab)