www.gusucode.com > classification_matlab_toolbox分类方法工具箱源码程序 > code/Classification_toolbox/CARTfunctions.m
function delta = CARTfunctions(split_point, features, targets, dim, split_type) %Calculate the difference in impurity for the CART algorithm Uc = unique(targets); for i = 1:length(Uc), in = find(targets == Uc(i)); Pr(i) = length(find(features(dim, in) > split_point))/length(in); Pl(i) = length(find(features(dim, in) <= split_point))/length(in); end switch split_type, case 'Entropy' Er = sum(-Pr.*log(Pr+eps)/log(2)); El = sum(-Pl.*log(Pl+eps)/log(2)); case {'Variance', 'Gini'} Er = 1 - sum(Pr.^2); El = 1 - sum(Pl.^2); case 'Missclassification' Er = 1 - max(Pr); El = 1 - max(Pl); otherwise error('Possible splitting rules are: Entropy, Variance, Gini, or Missclassification') end P = length(find(features(dim, :) <= split_point)) / length(targets); delta = -P*El - (1-P)*Er;