⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 build_tree.asv

📁 决策树
💻 ASV
📖 第 1 页 / 共 5 页
字号:
            [min,attribute_1_0_1_0]=min(all_gini);
            attribute_use_1_0_1_0(attri(1,attribute_1_0_1_0),1)=1;
            cla_point_1_0_1_0=attri(1,attribute_1_0_1_0);
            disp('................................................the classification 1_0_1_0 !!')
            [class_num_1_0_1_0_0,class_value_1_0_1_0,class_1_0_1_0_0,class_1_0_1_0_1]=classificate(class_num_1_0_1_0,attri(1,attribute_1_0_1_0),class_1_0_1_0,data_4((class_num+class_num_1_0_0+1):(class_num+class_num_1_0_0+class_num_1_0_1_0),(attri(1,attribute_1_0_1_0)*2-1)));
%             attribute_use_1_0_0_0=attribute_use_1_0_0;
%             attribute_use_1_0_0_1=attribute_use_1_0_0;
            clear  all_gini  min flag attri;
        end
    end        

%分第四层1_0_1_1节点

    if class_num_1_0-class_num_1_0_0-class_num_1_0_1_0>=element_num
        class_split_a=split(class_1_0_1_1(:,1),class_num_1_0-class_num_1_0_0-class_num_1_0_1_0);
        if class_split_a<class_split
            classsplit=1;
        else
            classsplit=0;
        end
        classificate_condition=classsplit*attribute_num_use*tree_level;
        if classificate_condition~=0
            flag=1;
            for i=1:attribute_num
                if attribute_use_1_0_1(i,1)==0;
                    all_gini(1,flag)=mingini((class_num_1_0-class_num_1_0_0-class_num_1_0_1_0),i,class_1_0_1_1,data_4((class_num+class_num_1_0_0+class_num_1_0_1_0+1):(class_num+class_num_1_0),(2*i-1)));
                    attri(1,flag)=i;
                    flag=flag+1;
                end
            end
            [min,attribute_1_0_1_1]=min(all_gini);
            attribute_use_1_0_1_1(attri(1,attribute_1_0_1_1),1)=1;
            cla_point_1_0_1_1=attri(1,attribute_1_0_1_1);
            disp('................................................the classification 1_0_1_1 !!')
            [class_num_1_0_1_1_0,class_value_1_0_1_1,class_1_0_1_1_0,class_1_0_1_1_1]=classificate((class_num_1_0-class_num_1_0_0-class_num_1_0_1_0),attri(1,attribute_1_0_1_1),class_1_0_1_1,data_4((class_num+class_num_1_0_0+class_num_1_0_1_0+1):(class_num+class_num_1_0),(attri(1,attribute_1_0_1_1)*2-1)));
%             attribute_use_1_0_1_0=attribute_use_1_0_1;
%             attribute_use_1_0_1_1=attribute_use_1_0_1;
            clear  all_gini  min flag attri;
        end
    end
end

class_value_1_1_0_1=0;
class_value_1_1_0_0=0;
cla_point_1_1_0_0=0;
class_num_1_1_0_0_0=0;
cla_point_1_1_0_1=0;
class_num_1_1_0_1_0=0;
if class_num_1_1_0_0~=0
%分第四层1_1_0_0节点

    if class_num_1_1_0_0>=element_num
        class_split_a=split(class_1_1_0_0(:,1),class_num_1_1_0_0);
        if class_split_a<class_split
            classsplit=1;
        else
            classsplit=0;
        end
        classificate_condition=classsplit*attribute_num_use*tree_level;
        if classificate_condition~=0
            flag=1;
            for i=1:attribute_num
                if attribute_use_1_1_0(i,1)==0;
                    all_gini(1,flag)=mingini(class_num_1_1_0_0,i,class_1_1_0_0,data_4((class_num+class_num_1_0+1):(class_num+class_num_1_0+class_num_1_1_0_0),(2*i-1)));
                    attri(1,flag)=i;
                    flag=flag+1;
                end
            end
            [min,attribute_1_1_0_0]=min(all_gini);
            attribute_use_1_1_0_0(attri(1,attribute_1_1_0_0),1)=1;
            cla_point_1_1_0_0=attri(1,attribute_1_1_0_0);
            disp('................................................the classification 1_1_0_0 !!')
            [class_num_1_1_0_0_0,class_value_1_1_0_0,class_1_1_0_0_0,class_1_1_0_0_1]=classificate(class_num_1_1_0_0,attri(1,attribute_1_1_0_0),class_1_1_0_0,data_4((class_num+class_num_1_0+1):(class_num+class_num_1_0+class_num_1_1_0_0),(attri(1,attribute_1_1_0_0)*2-1)));
%             attribute_use_1_1_0_0=attribute_use_1_1_0;
%             attribute_use_1_1_0_1=attribute_use_1_1_0;
            clear  all_gini min attribute_0_0 attribute_0_1 attribute_1_0 attribute_1_1 flag attri;
        end
    end

%分第四层1_1_0_1节点

    if class_num_1_1_0-class_num_1_1_0_0>=element_num
        class_split_a=split(class_1_1_0_1(:,1),class_num_1_1_0-class_num_1_1_0_0);
        if class_split_a<class_split
            classsplit=1;
        else
            classsplit=0;
        end
        classificate_condition=classsplit*attribute_num_use*tree_level;
        if classificate_condition~=0
            flag=1;
            for i=1:attribute_num
                if attribute_use_1_1_0(i,1)==0;
                    all_gini(1,flag)=mingini((class_num_1_1_0-class_num_1_1_0_0),i,class_1_1_0_1,data_4((class_num+class_num_1_0+class_num_1_1_0_0+1):class_num+class_num_1_0+class_num_1_1_0,(2*i-1)));
                    attri(1,flag)=i;
                    flag=flag+1;
                end
            end
            [min,attribute_1_1_0_1]=min(all_gini);
            attribute_use_1_1_0_1(attri(1,attribute_1_1_0_1),1)=1;
            cla_point_1_1_0_1=attri(1,attribute_1_1_0_1);
            disp('................................................the classification 1_1_0_1 !!')
            [class_num_1_1_0_1_0,class_value_1_1_0_1,class_1_1_0_1_0,class_1_1_0_1_1]=classificate((class_num_1_1_0-class_num_1_1_0_0),attri(1,attribute_1_1_0_1),class_1_1_0_1,data_4((class_num+class_num_1_0+class_num_1_1_0_0+1):class_num+class_num_1_0+class_num_1_1_0,(attri(1,attribute_1_1_0_1)*2-1)));
%             attribute_use_1_1_1_0=attribute_use_1_1_1;
%             attribute_use_1_1_1_1=attribute_use_1_1_1
            clear  all_gini min attribute_0_0 attribute_0_1 attribute_1_0 attribute_1_1 flag attri;
        end
    end
end

class_value_1_1_1_1=0;
class_value_1_1_1_0=0;
cla_point_1_1_1_0=0;
class_num_1_1_1_0_0=0;
cla_point_1_1_1_1=0;
class_num_1_1_1_1_0=0;
if class_num_1_1_1_0~=0
%分第四层1_1_1_0节点

    if class_num_1_1_1_0>=element_num
        class_split_a=split(class_1_1_1_0(:,1),class_num_1_1_1_0);
        if class_split_a<class_split
            classsplit=1;
        else
            classsplit=0;
        end
        classificate_condition=classsplit*attribute_num_use*tree_level;
        if classificate_condition~=0
            flag=1;
            for i=1:attribute_num
                if attribute_use_1_1_1(i,1)==0;
                    all_gini(1,flag)=mingini(class_num_1_1_1_0,i,class_1_1_1_0,data_4((class_num+class_num_1_0+class_num_1_1_0+1):(class_num+class_num_1_0+class_num_1_1_0+class_num_1_1_1_0),(2*i-1)));
                    attri(1,flag)=i;
                    flag=flag+1;
                end
            end
            [min,attribute_1_1_1_0]=min(all_gini);
            attribute_use_1_1_1_0(attri(1,attribute_1_1_1_0),1)=1;
            cla_point_1_1_1_0=attri(1,attribute_1_1_1_0);
            disp('................................................the classification 1_1_1_0 !!')
            [class_num_1_1_1_0_0,class_value_1_1_1_0,class_1_1_1_0_0,class_1_1_1_0_1]=classificate(class_num_1_1_1_0,attri(1,attribute_1_1_1_0),class_1_1_1_0,data_4((class_num+class_num_1_0+class_num_1_1_0+1):(class_num+class_num_1_0+class_num_1_1_0+class_num_1_1_1_0),(attri(1,attribute_1_1_1_0)*2-1)));
%             attribute_use_1_1_0_0=attribute_use_1_1_0;
%             attribute_use_1_1_0_1=attribute_use_1_1_0;
            clear  all_gini min attribute_0_0 attribute_0_1 attribute_1_0 attribute_1_1 flag attri;
        end
    end

%分第四层1_1_1_1节点

    if num-class_num-class_num_1_0-class_num_1_1_0-class_num_1_1_1_0>=element_num
        class_split_a=split(class_1_1_1_1(:,1),num-class_num-class_num_1_0-class_num_1_1_0-class_num_1_1_1_0);
        if class_split_a<class_split
            classsplit=1;
        else
            classsplit=0;
        end
        classificate_condition=classsplit*attribute_num_use*tree_level;
        if classificate_condition~=0
            flag=1;
            for i=1:attribute_num
                if attribute_use_1_1_1(i,1)==0;
                    all_gini(1,flag)=mingini((num-class_num-class_num_1_0-class_num_1_1_0-class_num_1_1_1_0),i,class_1_1_1_1,data_4((class_num+class_num_1_0+class_num_1_1_0+class_num_1_1_1_0+1):num,(2*i-1)));
                    attri(1,flag)=i;
                    flag=flag+1;
                end
            end
            [min,attribute_1_1_1_1]=min(all_gini);
            attribute_use_1_1_1_1(attri(1,attribute_1_1_1_1),1)=1;
            cla_point_1_1_1_1=attri(1,attribute_1_1_1_1);
            disp('................................................the classification 1_1_1_1 !!')
            [class_num_1_1_1_1_0,class_value_1_1_1_1,class_1_1_1_1_0,class_1_1_1_1_1]=classificate((num-class_num-class_num_1_0-class_num_1_1_0-class_num_1_1_1_0),attri(1,attribute_1_1_1_1),class_1_1_1_1,data_4((class_num+class_num_1_0+class_num_1_1_0+class_num_1_1_1_0+1):num,(attri(1,attribute_1_1_1_1)*2-1)));
%             attribute_use_1_1_1_0=attribute_use_1_1_1;
%             attribute_use_1_1_1_1=attribute_use_1_1_1
            clear  all_gini min attribute_0_0 attribute_0_1 attribute_1_0 attribute_1_1 flag attri;
        end
    end
end





% [class_a,class_b]=countclass(class_train(:,1));
% disp('                                                       t0');
% disp(['                                                  (1:',int2str(class_a),' 0:',int2str(class_b),')']);
% disp('                                             /                   \');
% [class_0_a,class_0_b]=countclass(class_0(:,1));
% [class_1_a,class_1_b]=countclass(class_1(:,1));
% disp('                                        t1                           t2');
% disp(['                                 (1:',int2str(class_0_a),' 0:',int2str(class_0_b), ')                        (1:',...
%     int2str(class_1_a),' 0:',int2str(class_1_b),')']);
% disp('                                 /            \                       /             \');
% [class_0_0_a,class_0_0_b]=countclass(class_0_0(:,1));
% [class_0_1_a,class_0_1_b]=countclass(class_0_1(:,1));
% [class_1_0_a,class_1_0_b]=countclass(class_1_0(:,1));
% [class_1_1_a,class_1_1_b]=countclass(class_1_1(:,1));
% disp('                          t3                  t4                    t5                  t6');
% disp(['                 (1:',int2str(class_0_0_a),' 0:',int2str(class_0_0_b), ')             (1:',int2str(class_0_1_a),' 0:',...
%     int2str(class_0_1_b),')          (1:',int2str(class_1_0_a),' 0:',int2str(class_1_0_b),')                 (1:',int2str(class_1_1_a),' 0:',int2str(class_1_1_b),')']);
% disp('                /          \               /        \              /       \              /            \');
% [class_0_0_0_a,class_0_0_0_b]=countclass(class_0_0_0(:,1)); 
% [class_0_1_0_a,class_0_1_0_b]=countclass(class_0_1_0(:,1));
% [class_1_0_0_a,class_1_0_0_b]=countclass(class_1_0_0(:,1));
% [class_1_1_0_a,class_1_1_0_b]=countclass(class_1_1_0(:,1));
% [class_0_0_1_a,class_0_0_1_b]=countclass(class_0_0_1(:,1));
% [class_0_1_1_a,class_0_1_1_b]=countclass(class_0_1_1(:,1));
% [class_1_0_1_a,class_1_0_1_b]=countclass(class_1_0_1(:,1));
% [class_1_1_1_a,class_1_1_1_b]=countclass(class_1_1_1(:,1));
% disp('           t7             t8           t9          t10         t11           t12       t13                t14');
% disp(['      (1:',int2str(class_0_0_0_a),' 0:',int2str(class_0_0_0_b), ')      (1:',int2str(class_0_0_1_a),' 0:',...
%     int2str(class_0_0_1_b),')   (1:',int2str(class_0_1_0_a),' 0:',int2str(class_0_1_0_b),')  (1:',int2str(class_0_1_1_a),' 0:',...
%     int2str(class_0_1_1_b),') (1:',int2str(class_1_0_0_a),' 0:',int2str(class_1_0_0_b),...
%     ')  (1:',int2str(class_1_0_1_a),' 0:',int2str(class_1_0_1_b),')   (1:',int2str(class_1_1_0_a),' 0:',int2str(class_1_1_0_b),...
%     ')         (1:',int2str(class_1_1_1_a),' 0:',int2str(class_1_1_1_b),')']);
% disp('      /        \       /      \      /     \      /    \     /   \         /   \       /   \             /   \');
% [class_0_0_0_0_a,class_0_0_0_0_b]=countclass(class_0_0_0_0(:,1)); 
% [class_0_1_0_0_a,class_0_1_0_0_b]=countclass(class_0_1_0_0(:,1));
% [class_1_0_0_0_a,class_1_0_0_0_b]=countclass(class_1_0_0_0(:,1));
% [class_1_1_0_0_a,class_1_1_0_0_b]=countclass(class_1_1_0_0(:,1));
% [class_0_0_1_0_a,class_0_0_1_0_b]=countclass(class_0_0_1_0(:,1));
% [class_0_1_1_0_a,class_0_1_1_0_b]=countclass(class_0_1_1_0(:,1));
% [class_1_0_1_0_a,class_1_0_1_0_b]=countclass(class_1_0_1_0(:,1));
% [class_1_1_1_0_a,class_1_1_1_0_b]=countclass(class_1_1_1_0(:,1));
% [class_0_0_0_1_a,class_0_0_0_1_b]=countclass(class_0_0_0_1(:,1)); 
% [class_0_1_0_1_a,class_0_1_0_1_b]=countclass(class_0_1_0_1(:,1));
% [class_1_0_0_1_a,class_1_0_0_1_b]=countclass(class_1_0_0_1(:,1));
% [class_1_1_0_1_a,class_1_1_0_1_b]=countclass(class_1_1_0_1(:,1));
% [class_0_0_1_1_a,class_0_0_1_1_b]=countclass(class_0_0_1_1(:,1));
% [class_0_1_1_1_a,class_0_1_1_1_b]=countclass(class_0_1_1_1(:,1));
% [class_1_0_1_1_a,class_1_0_1_1_b]=countclass(class_1_0_1_1(:,1));
% [class_1_1_1_1_a,class_1_1_1_1_b]=countclass(class_1_1_1_1(:,1));
% disp('    t15          t16   t17     t18  t19     t20  t21   t22  t23  t24    t25    t26   t27    t29      t30     t31');
% disp(['  (',int2str(class_0_0_0_0_a),',',int2str(class_0_0_0_0_b), ')     (',int2str(class_0_0_0_1_a),',',...
%     int2str(class_0_0_0_1_b),') (',int2str(class_0_0_1_0_a),',',int2str(class_0_0_1_0_b),')   (',int2str(class_0_0_1_1_a),',',...
%     int2str(class_0_0_1_1_b),') (',int2str(class_0_1_0_0_a),',',int2str(class_0_1_0_0_b),...
%     ') (',int2str(class_0_1_0_1_a),',',int2str(class_0_1_0_1_b),') (',int2str(class_0_1_1_0_a),',',int2str(class_0_1_1_0_b),...
%     ') (',int2str(class_0_1_1_1_a),',',int2str(class_0_1_1_1_b),') (',int2str(class_1_0_0_0_a),',',int2str(class_1_0_0_0_b),...
%     ') (',int2str(class_1_0_0_1_a),',',int2str(class_1_0_0_1_b),')(',int2str(class_1_0_1_0_a),',',int2str(class_1_0_1_0_b),...
%     ')(',int2str(class_1_0_1_1_a),',',int2str(class_1_0_1_1_b),') (',int2str(class_1_1_0_0_a),',',int2str(class_1_1_0_0_b),...
%     ') (',int2str(class_1_1_0_1_a),',',int2str(class_1_1_0_1_b),') (',int2str(class_1_1_1_0_a),',',int2str(class_1_1_1_0_b),...
%     ') (',int2str(class_1_1_1_1_a),',',int2str(class_1_1_1_1_b),')']);
disp('The tree is built !!');
test_A;
clear a attribute attibute_num attibute_num_use attribute_test b class_split class_split_a class_value class_value_root
clear classsplit classificate_condition cor data_2 data_3 data_4 element_num i j k  m_temp n
clear cla_p cla_point cla_point_0 cla_point_1 cla_point_0_0 cla_point_0_1  cla_point_1_0 cla_point_1_1...
    cla_point_0_0_0 cla_point_0_0_1 cla_point_0_1_0 cla_point_0_1_1 cla_point_1_0_0 cla_point_1_0_1 cla_point_1_1_0 cla_point_1_1_1...
    cla_point_0_0_0_0 cla_point_0_0_0_1 cla_point_0_0_1_0 cla_point_0_0_1_1 cla_point_0_1_0_0 cla_point_0_1_0_1 ...
    cla_point_0_1_1_0 cla_point_0_1_1_1 cla_point_1_0_0_0 cla_point_1_0_0_1 cla_point_1_0_1_0 cla_point_1_0_1_1...
    cla_point_1_1_0_0 cla_point_1_1_0_1 cla_point_1_1_1_0 cla_point_1_1_1_1
clear num class_num class_num_0 class_num_1 class_num_0_0 class_num_0_1  class_num_1_0 class_num_1_1...
    class_num_0_0_0 class_num_0_0_1 class_num_0_1_0 class_num_0_1_1 class_num_1_0_0 class_num_1_0_1 class_num_1_1_0 class_num_1_1_1...
    class_num_0_0_0_0 class_num_0_0_0_1 class_num_0_0_1_0 class_num_0_0_1_1 class_num_0_1_0_0 class_num_0_1_0_1 ...
    class_num_0_1_1_0 class_num_0_1_1_1 class_num_1_0_0_0 class_num_1_0_0_1 class_num_1_0_1_0 class_num_1_0_1_1...
    class_num_1_1_0_0 class_num_1_1_0_1 class_num_1_1_1_0 class_num_1_1_1_1...
    class_num_0_0_0_0_0 class_num_0_0_0_1_0 class_num_0_0_1_0_0 class_num_0_0_1_1_0   class_num_0_1_0_0_0 class_num_0_1_0_1_0...
    class_num_0_1_1_0_0 class_num_0_1_1_1_0 class_num_1_0_0_0_0 class_num_1_0_0_1_0 class_num_1_0_1_0_0 class_num_1_0_1_1_0...
    class_num_1_1_0_0_0 class_num_1_1_0_1_0 class_num_1_1_1_0_0 class_num_1_1_1_1_0
clear  class_0 class_1 class_0_0 class_0_1  class_1_0 class_1_1...
    class_0_0_0 class_0_0_1 class_0_1_0 class_0_1_1 class_1_0_0 class_1_0_1 class_1_1_0 class_1_1_1...
    class_0_0_0_0 class_0_0_0_1 class_0_0_1_0 class_0_0_1_1 class_0_1_0_0 class_0_1_0_1 ...
    class_0_1_1_0 class_0_1_1_1 class_1_0_0_0 class_1_0_0_1 class_1_0_1_0 class_1_0_1_1...
    class_1_1_0_0 class_1_1_0_1 class_1_1_1_0 class_1_1_1_1
clear  class_value_0 class_value_1 class_value_0_0 class_value_0_1  class_value_1_0 class_value_1_1...
    class_value_0_0_0 class_value_0_0_1 class_value_0_1_0 class_value_0_1_1 class_value_1_0_0 class_value_1_0_1 class_value_1_1_0 class_value_1_1_1...
    class_value_0_0_0_0 class_value_0_0_0_1 class_value_0_0_1_0 class_value_0_0_1_1 class_value_0_1_0_0 class_value_0_1_0_1 ...
    class_value_0_1_1_0 class_value_0_1_1_1 class_value_1_0_0_0 class_value_1_0_0_1 class_value_1_0_1_0 class_value_1_0_1_1...
    class_value_1_1_0_0 class_value_1_1_0_1 class_value_1_1_1_0 class_value_1_1_1_1
clear  p_0 p_1 p_0_0 p_0_1  p_1_0 p_1_1...
    p_0_0_0 p_0_0_1 p_0_1_0 p_0_1_1 p_1_0_0 p_1_0_1 p_1_1_0 p_1_1_1...
    p_0_0_0_0 p_0_0_0_1 p_0_0_1_0 p_0_0_1_1 p_0_1_0_0 p_0_1_0_1 ...
    p_0_1_1_0 p_0_1_1_1 p_1_0_0_0 p_1_0_0_1 p_1_0_1_0 p_1_0_1_1...
    p_1_1_0_0 p_1_1_0_1 p_1_1_1_0 p_1_1_1_1
clear  attribute_use_0 attribute_use_1 attribute_use_0_0 attribute_use_0_1  attribute_use_1_0 attribute_use_1_1...
    attribute_use_0_0_0 attribute_use_0_0_1 attribute_use_0_1_0 attribute_use_0_1_1 attribute_use_1_0_0 attribute_use_1_0_1 attribute_use_1_1_0 attribute_use_1_1_1...
    attribute_use_0_0_0_0 attribute_use_0_0_0_1 attribute_use_0_0_1_0 attribute_use_0_0_1_1 attribute_use_0_1_0_0 attribute_use_0_1_0_1 ...
    attribute_use_0_1_1_0 attribute_use_0_1_1_1 attribute_use_1_0_0_0 attribute_use_1_0_0_1 attribute_use_1_0_1_0 attribute_use_1_0_1_1...
    attribute_use_1_1_0_0 attribute_use_1_1_0_1 attribute_use_1_1_1_0 attribute_use_1_1_1_1
clear attribute_0 attribute_1 attribute_0_0 attribute_0_1  attribute_1_0 attribute_1_1...
    attribute_0_0_0 attribute_0_0_1 attribute_0_1_0 attribute_0_1_1 attribute_1_0_0 attribute_1_0_1 attribute_1_1_0 attribute_1_1_1...
    attribute_0_0_0_0 attribute_0_0_0_1 attribute_0_0_1_0 attribute_0_0_1_1 attribute_0_1_0_0 attribute_0_1_0_1 ...
    attribute_0_1_1_0 attribute_0_1_1_1 attribute_1_0_0_0 attribute_1_0_0_1 attribute_1_0_1_0 attribute_1_0_1_1...
    attribute_1_1_0_0 attribute_1_1_0_1 attribute_1_1_1_0 attribute_1_1_1_1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -