?? build_tree.m
字號(hào):
else
class_value_1_0_1=0;
class_value_1_0_0=0;
cla_point_1_0_0=0;
class_num_1_0_0_0=0;
cla_point_1_0_1=0;
class_num_1_0_1_0=0;
end
if class_num_1_1_0~=0
%分第三層1_1_0節(jié)點(diǎn)
if class_num_1_1_0>=element_num
class_split_a=split(class_1_1_0(:,1),class_num_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(i,1)==0;
all_gini(1,flag)=mingini(class_num_1_1_0,i,class_1_1_0,data_3((class_num+class_num_1_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]=min(all_gini);
attribute_use_1_1_0(attri(1,attribute_1_1_0),1)=1;
cla_point_1_1_0=attri(1,attribute_1_1_0);
disp('................................................the classification 1_1_0 !!')
[class_num_1_1_0_0,class_value_1_1_0,class_1_1_0_0,class_1_1_0_1]=classificate(class_num_1_1_0,attri(1,attribute_1_1_0),class_1_1_0,data_3((class_num+class_num_1_0+1):(class_num+class_num_1_0+class_num_1_1_0),(attri(1,attribute_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;
else
class_value_1_1_0=0;
cla_point_1_1_0=0;
class_num_1_1_0_0=0;
end
else
class_value_1_1_0=0;
cla_point_1_1_0=0;
class_num_1_1_0_0=0;
end
%分第三層1_1_1節(jié)點(diǎn)
if num-class_num-class_num_1_0-class_num_1_1_0>=element_num
class_split_a=split(class_1_1_1(:,1),num-class_num-class_num_1_0-class_num_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(i,1)==0;
all_gini(1,flag)=mingini((num-class_num-class_num_1_0-class_num_1_1_0),i,class_1_1_1,data_3((class_num+class_num_1_0+class_num_1_1_0+1):num,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_1_1_1]=min(all_gini);
attribute_use_1_1_1(attri(1,attribute_1_1_1),1)=1;
cla_point_1_1_1=attri(1,attribute_1_1_1);
disp('................................................the classification 1_1_1 !!')
[class_num_1_1_1_0,class_value_1_1_1,class_1_1_1_0,class_1_1_1_1]=classificate((num-class_num-class_num_1_0-class_num_1_1_0),attri(1,attribute_1_1_1),class_1_1_1,data_3((class_num+class_num_1_0+class_num_1_1_0+1):num,(attri(1,attribute_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;
else
class_value_1_1_1=0;
cla_point_1_1_1=0;
class_num_1_1_1_0=0;
end
else
class_value_1_1_1=0;
cla_point_1_1_1=0;
class_num_1_1_1_0=0;
end
else
class_value_1_1_1=0;
class_value_1_1_0=0;
cla_point_1_1_0=0;
class_num_1_1_0_0=0;
cla_point_1_1_1=0;
class_num_1_1_1_0=0;
end
%clear attribute attribute_0 attribute_0_1_0 attribute_1 attribute_1_0_0 attribute_1_0_1;
%clear attribute_1_1_1 ;
tree_level=tree_level-1;
data_4_0_0=chongpai_4_0_0(class_num_0_0_0,class_num_0_0,data_3,cla_point_0_0_0,cla_point_0_0_1);
data_4_0_1=chongpai_4_0_1(class_num_0_1_0,class_num-class_num_0_0,data_3,cla_point_0_1_0,cla_point_0_1_1);
for i=1:class_num_0_0
data_4(i,:)=data_4_0_0(i,:);
end
for i=1:class_num-class_num_0_0
data_4(class_num_0_0+i,:)=data_4_0_1(i,:);
end
data_4_1_0=chongpai_4_1_0(class_num_1_0_0,class_num_1_0,data_3,cla_point_1_0_0,cla_point_1_0_1);
data_4_1_1=chongpai_4_1_1(class_num_1_1_0,num-class_num-class_num_1_0,data_3,cla_point_1_1_0,cla_point_1_1_1);
for i=1:class_num_1_0
data_4(class_num+i,:)=data_4_1_0(i,:);
end
for i=1:num-class_num-class_num_1_0
data_4(class_num+class_num_1_0+i,:)=data_4_1_1(i,:);
end
clear data_4_0_0 data_4_0_1 data_4_1_0 data_4_1_1
attribute_num_use=attribute_num_use-1;
%分第四層0_0_0_0節(jié)點(diǎn)
class_value_0_0_0_1=0;
class_value_0_0_0_0=0;
cla_point_0_0_0_0=0;
class_num_0_0_0_0_0=0;
cla_point_0_0_0_1=0;
class_num_0_0_0_1_0=0;
if class_num_0_0_0_0~=0;
if class_num_0_0_0_0>=element_num
class_split_a=split(class_0_0_0_0(:,1),class_num_0_0_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_0_0_0(i,1)==0;
all_gini(1,flag)=mingini(class_num_0_0_0_0,i,class_0_0_0_0,data_4(1:class_num_0_0_0_0,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_0_0_0]=min(all_gini);
attribute_use_0_0_0_0(attri(1,attribute_0_0_0_0),1)=1;
cla_point_0_0_0_0=attri(1,attribute_0_0_0_0);
disp('................................................the classification 0_0_0_0 !!')
[class_num_0_0_0_0_0,class_value_0_0_0_0,class_0_0_0_0_0,class_0_0_0_0_1]=classificate(class_num_0_0_0_0,attri(1,attribute_0_0_0_0),class_0_0_0_0,data_4(1:class_num_0_0_0_0,(attri(1,attribute_0_0_0_0)*2-1)));
clear all_gini min flag attri;
end
end
%分第四層0_0_0_1節(jié)點(diǎn)
if class_num_0_0_0-class_num_0_0_0_0>=element_num
class_split_a=split(class_0_0_0_1(:,1),class_num_0_0_0-class_num_0_0_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_0_0_0(i,1)==0;
all_gini(1,flag)=mingini((class_num_0_0_0-class_num_0_0_0_0),i,class_0_0_0_1,data_4((class_num_0_0_0_0+1):...
class_num_0_0_0,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_0_0_1]=min(all_gini);
attribute_use_0_0_0_1(attri(1,attribute_0_0_0_1),1)=1;
cla_point_0_0_0_1=attri(1,attribute_0_0_0_1);
disp('................................................the classification 0_0_0_1 !!')
[class_num_0_0_0_1_0,class_value_0_0_0_1,class_0_0_0_1_0,class_0_0_0_1_1]=classificate(...
class_num_0_0_0-class_num_0_0_0_0,attri(1,attribute_0_0_0_1),class_0_0_0_1,...
data_4((class_num_0_0_0_0+1):class_num_0_0_0,(attri(1,attribute_0_0_0_1)*2-1)));
clear all_gini min flag attri;
end
end
end
%分第四層0_0_1_0節(jié)點(diǎn)
class_value_0_0_1_1=0;
class_value_0_0_1_0=0;
cla_point_0_0_1_0=0;
class_num_0_0_1_0_0=0;
cla_point_0_0_1_1=0;
class_num_0_0_1_1_0=0;
if class_num_0_0_1_0~=0;
if class_num_0_0_1_0>=element_num
class_split_a=split(class_0_0_1_0(:,1),class_num_0_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_0_0_1(i,1)==0;
all_gini(1,flag)=mingini(class_num_0_0_1_0,i,class_0_0_1_0,data_4(1:class_num_0_0_1_0,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_0_1_0]=min(all_gini);
attribute_use_0_0_1_0(attri(1,attribute_0_0_1_0),1)=1;
cla_point_0_0_1_0=attri(1,attribute_0_0_1_0);
disp('................................................the classification 0_0_1_0 !!')
[class_num_0_0_1_0_0,class_value_0_0_1_0,class_0_0_0_1_0,class_0_0_0_1_1]=classificate(...
class_num_0_0_1_0,attri(1,attribute_0_0_1_0),class_0_0_1_0,data_4(class_num_0_0_0+1:...
class_num_0_0_0+class_num_0_0_1_0,(attri(1,attribute_0_0_1_0)*2-1)));
clear all_gini min flag attri;
end
end
%分第四層0_0_1_1節(jié)點(diǎn)
if class_num_0_0-class_num_0_0_0-class_num_0_0_1_0>=element_num
class_split_a=split(class_0_0_1_1(:,1),class_num_0_0-class_num_0_0_0-class_num_0_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_0_0_1(i,1)==0;
all_gini(1,flag)=mingini((class_num_0_0-class_num_0_0_0-class_num_0_0_1_0),i,class_0_0_1_1,...
data_4((class_num_0_0_0+class_num_0_0_1_0+1):class_num_0_0,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_0_1_1]=min(all_gini);
attribute_use_0_0_1_1(attri(1,attribute_0_0_1_1),1)=1;
cla_point_0_0_1_1=attri(1,attribute_0_0_1_1);
disp('................................................the classification 0_0_1_1 !!')
[class_num_0_0_1_1_0,class_value_0_0_1_1,class_0_0_1_1_0,class_0_0_1_1_1]=classificate(...
class_num_0_0-class_num_0_0_0-class_num_0_0_1_0,attri(1,attribute_0_0_1_1),class_0_0_1_1,...
data_4((class_num_0_0_0+class_num_0_0_1_0+1):class_num_0_0,(attri(1,attribute_0_0_0_1)*2-1)));
clear all_gini min flag attri;
end
end
end
%分第四層0_1_0_0節(jié)點(diǎn)
class_value_0_1_0_1=0;
class_value_0_1_0_0=0;
cla_point_0_1_0_0=0;
class_num_0_1_0_0_0=0;
cla_point_0_1_0_1=0;
class_num_0_1_0_1_0=0;
if class_num_0_1_0_0~=0
if class_num_0_1_0_0>=element_num
class_split_a=split(class_0_1_0_0(:,1),class_num_0_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_0_1_0(i,1)==0;
all_gini(1,flag)=mingini(class_num_0_1_0_0,i,class_0_1_0_0,data_4((class_num_0_0+1):(class_num_0_0+class_num_0_1_0_0),(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_1_0_0]=min(all_gini);
attribute_use_0_1_0_0(attri(1,attribute_0_1_0_0),1)=1;
cla_point_0_1_0_0=attri(1,attribute_0_1_0_0);
disp('................................................the classification 0_1_0_0 !!')
[class_num_0_1_0_0_0,class_value_0_1_0_0,class_0_1_0_0_0,class_0_1_0_0_1]=classificate(class_num_0_1_0_0,attri(1,attribute_0_1_0_0),class_0_1_0_0,data_4((class_num_0_0+1):(class_num_0_0+class_num_0_1_0_0),(attri(1,attribute_0_1_0_0)*2-1)));
% attribute_use_0_1_0_0=attribute_use_0_1_0;
% attribute_use_0_1_0_1=attribute_use_0_1_0;
clear all_gini min flag attri;
end
end
%分第_0_1_0_1 節(jié)點(diǎn)
if class_num_0_1_0-class_num_0_1_0_0>=element_num
class_split_a=split(class_0_1_0_1(:,1),class_num_0_1_0-class_num_0_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_0_1_0(i,1)==0;
all_gini(1,flag)=mingini(class_num_0_1_0-class_num_0_1_0_0,i,class_0_1_0_1,data_4((class_num_0_0+class_num_0_1_0_0+1):class_num_0_0+class_num_0_1_0,(2*i-1)));
attri(1,flag)=i;
flag=flag+1;
end
end
[min,attribute_0_1_0_1]=min(all_gini);
attribute_use_0_1_0_1(attri(1,attribute_0_1_0_1),1)=1;
cla_point_0_1_0_1=attri(1,attribute_0_1_0_1);
disp('................................................the classification 0_1_0_1 !!')
[class_num_0_1_0_1_0,class_value_0_1_0_1,class_0_1_0_1_0,class_0_1_0_1_1]=classificate(class_num_0_1_0-class_num_0_1_0_0,attri(1,attribute_0_1_0_1),class_0_1_0_1,data_4((class_num_0_0+class_num_0_1_0_0+1):class_num_0_0+class_num_0_1_0,(attri(1,attribute_0_1_0_1)*2-1)));
% attribute_use_0_1_1_0=attribute_use_0_1_1;
% attribute_use_0_1_1_1=attribute_use_0_1_1;
clear all_gini min flag attri;
end
end
end
%分第四層0_1_1_0節(jié)點(diǎn)
class_value_0_1_1_1=0;
class_value_0_1_1_0=0;
cla_point_0_1_1_0=0;
class_num_0_1_1_0_0=0;
cla_point_0_1_1_1=0;
class_num_0_1_1_1_0=0;
if class_num_0_1_1_0~=0
if class_num_0_1_1_0>=element_num
class_split_a=split(class_0_1_1_0(:,1),class_num_0_1_1_0);
if class_split_a<class_split
classsplit=1;
else
classsplit=0;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -