age.m

来自「数据挖掘里的判定树算法」· M 代码 · 共 65 行

M
65
字号
[rows,cols]=size(client);
%类标号属性为yes 和 no.
%首先计算出给定样本所需的期望信息。
J=5;K=1;
no_num=0;
age_no_num1=0;age_yes_num1=0;
age_no_num2=0;age_yes_num2=0;
age_no_num3=0;age_yes_num3=0;
for I=1:rows
    if strcmp(client(I,J),'no')
        no_num=no_num+1;
    end
end
yes_num=rows-no_num;
%disp(sprintf('no类的数量为:%d',no_num));
%disp(sprintf('yes类的数量为:%d',yes_num));
expect_sum=expect([yes_num no_num]);
for I=1:rows
    if strcmp(client(I,K),'<=30') &strcmp(client(I,J),'no')
        age_no_num1=age_no_num1+1;
    end
    if strcmp(client(I,K),'<=30') &strcmp(client(I,J),'yes')
        age_yes_num1=age_yes_num1+1;
    end
end
%disp(sprintf('年龄小于三十岁而不买电脑的人数:%d',age_no_num1));
%disp(sprintf('年龄小于三十岁而买电脑的人数:%d',age_yes_num1));
expect_1=expect([age_no_num1 age_yes_num1]);
for I=1:rows
    if strcmp(client(I,K),'>31and<=40') &strcmp(client(I,J),'no')
        age_no_num2=age_no_num2+1;
    end
    if strcmp(client(I,K),'>31and<=40') &strcmp(client(I,J),'yes')
        age_yes_num2=age_yes_num2+1;
    end
end
%disp(sprintf('年龄大于三十岁而小于四十岁但不买电脑的人数:%d',age_no_num2));
%disp(sprintf('年龄大于三十岁而小于四十岁但买电脑的人数:%d',age_yes_num2));
expect_2=expect([age_no_num2 age_yes_num2]);
for I=1:rows
    if strcmp(client(I,K),'>40') &strcmp(client(I,J),'no')
        age_no_num3=age_no_num3+1;
    end
    if strcmp(client(I,K),'>40') &strcmp(client(I,J),'yes')
        age_yes_num3=age_yes_num3+1;
    end
end
%disp(sprintf('年龄大于四十岁但不买电脑的人数:%d',age_no_num3));
%disp(sprintf('年龄大于四十岁但买电脑的人数:%d',age_yes_num3));
expect_3=expect([age_no_num3 age_yes_num3]);
%按age划分,对样本分类所需的期望信息为:
E_age=(age_no_num1+age_yes_num1)/rows*expect_1+(age_no_num2+age_yes_num2)/rows*expect_2+(age_no_num3+age_yes_num3)/rows*expect_3;
%disp(sprintf('按age划分的期望信息:%d',E_age));
G_age=expect_sum-E_age;
disp(sprintf('按age划分的信息增益是:%d',G_age));





        



⌨️ 快捷键说明

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