当前位置: 代码迷 >> 其他开发语言 >> 求:ID3决策树的matlab源码或者帮忙注释一上
  详细解决方案

求:ID3决策树的matlab源码或者帮忙注释一上

热度:5521   发布时间:2013-02-26 00:00:00.0
求:ID3决策树的matlab源码或者帮忙注释一下
   问题如题啦,急求能在matlab运行的(最好是matlab7.0),ID3决策树源码,最好里面有注释或者说明,能让人看明白的。非常非常感谢啦!!!
   或者,帮忙给下面这段源码加上注释,同样感激不尽!!!


function D = ID3(train_features, train_targets, params, region)

% Classify using Quinlan´s ID3 algorithm
% Inputs:
% features - Train features
% targets     - Train targets
% params - [Number of bins for the data, Percentage of incorrectly assigned samples at a node]
% region     - Decision region vector: [-x x -y y number_of_points]
%
% Outputs
% D - Decision sufrace

[Ni, M]    = size(train_features);

%Get parameters
[Nbins, inc_node] = process_params(params);
inc_node    = inc_node*M/100;

%For the decision region
N           = region(5);
mx          = ones(N,1) * linspace (region(1),region(2),N);
my          = linspace (region(3),region(4),N)´ *ones(1,N);
flatxy      = [mx(:), my(:)]´;

%Preprocessing
[f, t, UW, m]      = PCA(train_features, train_targets, Ni, region);
train_features  = UW * (train_features - m*ones(1,M));;
flatxy          = UW * (flatxy - m*ones(1,N^2));;

%First, bin the data and the decision region data
[H, binned_features]= high_histogram(train_features, Nbins, region);
[H, binned_xy]      = high_histogram(flatxy, Nbins, region);

%Build the tree recursively
disp(´Building tree´)
tree        = make_tree(binned_features, train_targets, inc_node, Nbins);

%Make the decision region according to the tree
disp(´Building decision surface using the tree´)
targets = use_tree(binned_xy, 1:N^2, tree, Nbins, unique(train_targets));

D = reshape(targets,N,N);
%END

function targets = use_tree(features, indices, tree, Nbins, Uc)
%Classify recursively using a tree

targets = zeros(1, size(features,2));

if (size(features,1) == 1),
    %Only one dimension left, so work on it
    for i = 1:Nbins,
        in = indices(find(features(indices) == i));
        if ~isempty(in),
            if isfinite(tree.child(i)),
                targets(in) = tree.child(i);
            else
                %No data was found in the training set for this bin, so choose it randomally
  相关解决方案