?? mingini.m
字號(hào):
function [min_gini,attri]=mingini(sample,attribute,classname,object)
%load classname;
%attribute=input('please input the attribute:','s');
mar=zeros(sample,2);
switch attribute
case 1
leucocyte_train=zeros(sample,2);
disp('1.the attribute is leucocyte !');
leucocyte_train(:,1)=object;
leucocyte_train(:,2)=[1:sample];
leucocyte_train=sortrows(leucocyte_train,1);
% xlswrite('attribute.xls',leucocyte_train,'sheet1','a2:b701');
mar=leucocyte_train;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a2');
attri=1;
case 2
middle_train=zeros(sample,2);
disp('2.the attribute is middle !');
middle_train(:,1)=object;
middle_train(:,2)=[1:sample];
middle_train=sortrows(middle_train,1);
% xlswrite('attribute.xls',middle_train,'sheet1','c2:d701');
mar=middle_train;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a3');
attri=2;
case 3
lymph_train=zeros(sample,2);
disp('3.the attribute is lymph !');
lymph_train(:,1)=object;
lymph_train(:,2)=[1:sample];
lymph_train=sortrows(lymph_train,1);
% xlswrite('attribute.xls',lymph_train,'sheet1','e2:f701');
mar=lymph_train;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a4');
attri=3;
case 4
erythrocyte_train=zeros(sample,2);
disp('4.the attribute is erythrocyte !');
erythrocyte_train(:,1)=object;
erythrocyte_train(:,2)=[1:sample];
erythrocyte_train=sortrows(erythrocyte_train,1);
% xlswrite('attribute.xls',erythrocyte_train,'sheet1','g2:h701');
mar=erythrocyte_train ;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a5');
attri=4;
case 5
hypo_train=zeros(sample,2);
disp('5.the attribute is hypo !');
hypo_train(:,1)=object;
hypo_train(:,2)=[1:sample];
hypo_train=sortrows(hypo_train,1);
% xlswrite('attribute.xls',hypo_train,'sheet1','i2:j701');
mar=hypo_train;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a6');
attri=5;
case 6
platelet_train=zeros(sample,2);
disp('6.the attribute is platelet !');
platelet_train(:,1)=object;
platelet_train(:,2)=[1:sample];
platelet_train=sortrows(platelet_train,1);
% xlswrite('attribute.xls',platelet_train,'sheet1','k2:l701');
mar=platelet_train;
disp('the mingini is :');
gini=zeros(sample,1);
for i=1:sample
k=0;
m=0;
for j=1:i
if classname(mar(j,2),1)==1 % 第一類得值為“1”的個(gè)數(shù)
k=k+1;
end
end
for j=1:(sample-i)
if classname(mar((i+j),2),1)==1 % 第二類得值為“1”的個(gè)數(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
min_gini=min(gini) %求 attribute 的最小gini
% xlswrite('using.xls',min_gini,'sheet1','a7');
attri=6;
otherwise
return;
end
%clear
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -