采用ID3算法来实现决策树分类,下面通过举例天气等因素对销量影响的因子。
使用ID3算法建立决策树的MATLAB代码如下:
ID3_decision_tree.m
%% 使用ID3决策树算法预测销量高低
clear ;
%% 数据预处理
disp('正在进行数据预处理...');
[matrix,attributes_label,attributes] = id3_preprocess();
%% 构造ID3决策树,其中id3()为自定义函数
disp('数据预处理完成,正在进行构造树...');
tree = id3(matrix,attributes_label,attributes);
%% 打印并画决策树
[nodeids,nodevalues] = print_tree(tree);
tree_plot(nodeids,nodevalues);
disp('ID3算法构建决策树完成!');
Id3_preprocess.m
function [ matrix,attributes,activeAttributes ] = id3_preprocess( )
%% ID3算法数据预处理,把字符串转换为0,1编码
% 输出参数:
% matrix: 转换后的0,1矩阵;
% attributes: 属性和Label;
% activeAttributes : 属性向量,全1;
%% 读取数据
txt = { '序号' '天气' '是否周末' '是否有促销' '销量'
'' '坏' '是' '是' '高'
'' '坏' '是' '是' '高'
'' '坏' '是' '是' '高'
'' '坏' '否' '是' '高'
'' '坏' '是' '是' '高'
'' '坏' '否' '是' '高'
'' '坏' '是' '否' '高'
'' '好' '是' '是' '高'
'' '好' '是' '否' '高'
'' '好' '是' '是' '高'
'' '好' '是' '是' '高'
'' '好' '是' '是' '高'
'' '好' '是' '是' '高'
'' '坏' '是' '是' '低'
'' '好' '否' '是' '高'
'' '好' '否' '是' '高'
'' '好' '否' '是' '高'
'' '好' '否' '是' '高'
'' '好' '否' '否' '高'
'' '坏' '否' '否' '低'
'' '坏' '否' '是' '低'
'' '坏' '否' '是' '低'
'' '坏' '否' '是' '低'
'' '坏' '否' '否' '低'
'' '坏' '是' '否' '低'
'' '好' '否' '是' '低'
'' '好' '否' '是' '低'
'' '坏' '否' '否' '低'