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

📄 classificate.m

📁 决策树
💻 M
字号:
function [class_num ,class_value_root,class_1,class_2]=classificate(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 classification 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 classification 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 classification 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 classification 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 classification 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 classification 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”的个数
            k=k+1;
        end
    end
    for j=1:(sample-i)
        if classname(mar((i+j),2),1)==1  % 第二类得值为“1”的个数
            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); %的分类点的对应值
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');





⌨️ 快捷键说明

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