?? classificate_root.m
字號:
function [class_num ,class_value_root,class_1,class_2]=classificate_root(sample,attribute,classname,object)
mar=zeros(sample,2);
%load classname;
%classname(:,1)=xlsread('xiongmen.xls','1','b2:b701');
%classname(:,2)=ones(700,1);
switch attribute
case 1
disp('.....................................the root is leucocyte !');
leucocyte_train=zeros(sample,2);
leucocyte_train(:,1)=object;
leucocyte_train(:,2)=[1:sample];
leucocyte_train=sortrows(leucocyte_train,1);
mar=leucocyte_train;
case 2
disp('.....................................the root is middle !');
middle_train=zeros(sample,2);
middle_train(:,1)=object;
middle_train(:,2)=[1:sample];
middle_train=sortrows(middle_train,1);
mar=middle_train;
case 3
disp('.....................................the root is lymph !');
lymph_train=zeros(sample,2);
lymph_train(:,1)=object;
lymph_train(:,2)=[1:sample];
lymph_train=sortrows(lymph_train,1);
mar=lymph_train;
case 4
disp('.....................................the root is erythrocyte !');
erythrocyte_train=zeros(sample,2);
erythrocyte_train(:,1)=object;
erythrocyte_train(:,2)=[1:sample];
erythrocyte_train=sortrows(erythrocyte_train,1);
mar=erythrocyte_train ;
case 5
disp('.....................................the root is hypo !');
hypo_train=zeros(sample,2);
hypo_train(:,1)=object;
hypo_train(:,2)=[1:sample];
hypo_train=sortrows(hypo_train,1);
mar=hypo_train;
case 6
disp('.....................................the root is platelet !');
platelet_train=zeros(sample,2);
platelet_train(:,1)=object;
platelet_train(:,2)=[1:sample];
platelet_train=sortrows(platelet_train,1);
mar=platelet_train;
otherwise
return;
end
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個數(shù)
m=m+1;
end
end
ginic1=1-(k/i)^2-((i-k)/i)^2; % 第一類的gini值
if i==sample % 第二類的gini值
ginic2=0;
else
ginic2=1-(m/(sample-i))^2-((sample-i-m)/(sample-i))^2;
end
gini(i,1)=(i/sample)*ginic1+((sample-i)/sample)*ginic2; % 總的gini值
end
[mingini,class_num]=min(gini); %求 attribute 的最小gini
%children_1=zeros(class_num,2);
%children_2=zeros((700-class_num),2);
class_1=zeros(class_num,2);
class_2=zeros((sample-class_num),2);
class_value=mar(class_num,1); %的分類點的對應(yīng)值
disp('the classification point is :');
class_value_root=class_value
for t=1:class_num %求第一子類
class_1(t,1)=classname(mar(t,2),1);
class_1(t,2)=2;
% children_1(t,1)=mar(t,1);
% children_1(t,2)=mar(t,2);
end
for y=1:(sample-class_num) %求第二子類
class_2(y,1)=classname(mar((class_num+y),2),1);
class_2(y,2)=3;
% children_2(y,1)=mar((class_num+y),1);
% children_2(y,2)=mar((class_num+y),2);
end
class_1;
class_2;
%children_1; %第一子類
%children_2; %第二子類
%xlswrite('using.xls',class_1,'sheet1','b2:c77');
%xlswrite('using.xls',class_2,'sheet1','d2:e625');
%xlswrite('using.xls',class_num,'sheet1','a10');
%xlswrite('using.xls',class_value,'sheet1','a11');
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -