决策树之信息增益计算模拟

决策树算法有一个关键步骤就是最优特征的选择,利用信息增益算法选择该特征,例子来自于《统计学习方法》

决策树之信息增益计算模拟_第1张图片决策树之信息增益计算模拟_第2张图片决策树之信息增益计算模拟_第3张图片决策树之信息增益计算模拟_第4张图片决策树之信息增益计算模拟_第5张图片

利用MATLAB2017A版本,编写MATLAB程序计算之,将上述的数据保存到data5.xlsx中

clear;clc;close all
% 计算信息增益,决策树算法的基础
data = readtable('data5.xlsx');
data = string(table2cell(data));
%
H = @(p) sum(-p.*log2(p));
% 计算H(D)
HDD = data(:, end);
uHDD = unique(HDD);
n = length(HDD);
HD = getHDi(HDD, uHDD);
% 计算g(D)
gD = HD - cellfun(@(z)...
     sum(z == unique(z)') *...
     arrayfun(@(x)getHDi(HDD(z == x), uHDD),...
     unique(z)) / n, num2cell(data(:, 2: end-1),1));
[~, idx] = max(gD);
fprintf('选择第%d个特征最为最优特征\n', idx);

function y = getHDi(x, uHDD)
H = @(p) nansum(-p*log2(p)');
y = H(sum(x == uHDD') / length(x));
end

你可能感兴趣的:(Matlab,机器学习)