test_set.m

来自「采用Fisher线性分类方法」· M 代码 · 共 57 行

M
57
字号
%%%%%%%%%%%%%%%%%%%%%%%%%% Testing %%%%%%%%%%%%%%%%%%%%%%%%%%
function E=Test_Set(TestSet,Training)
% 计算各类错误率e1,e2 和总错误率e
X=TestSet.X';
E=[0,0;0,0;0,0;0,0];
for i=1:TestSet.n
    Y=TestSet.X';
    if TestSet.XinBie(i)==1
        plot(Y(1,i),Y(2,i),'r+');
        hold on;
    else
        plot(Y(1,i),Y(2,i),'b:p');
        hold on;
    end
end
for num=1:4 %根据四种不同的y取值,进行分类
    switch num
    case 1,
        y=Training.y1;
    case 2,
        y=Training.y2;
    case 3,
        y=Training.y3;    
    otherwise,
        y=Training.y4;    
    end
    for i=1:TestSet.n
        g=Training.W*X(:,i)-y;%判别函数
        Y_wrong=TestSet.X';
        if TestSet.XinBie(i)*g<0
            if TestSet.XinBie(i)==1
                E(num,1)=E(num,1)+1;%计算第1类被判错的错误率
                plot(Y_wrong(1,i),Y_wrong(2,i),'g:O');
                hold on;
            else
                E(num,2)=E(num,2)+1;%计算第2类被判错的错误率
                plot(Y_wrong(1,i),Y_wrong(2,i),'g:O');
                hold on;
            end
        end
    end
e1=E(num,1)/TestSet.n1;
e2=E(num,2)/TestSet.n2;
e=(E(num,1)+E(num,2))/TestSet.n;
fprintf('方法%d:第1类错误率=%.2f%%,第2类错误率=%.2f%%,总错误率=%.2f%%\n',num,e1*100,e2*100,e*100);
end

T=Training.W';
for i=145:0.1:185
%身高的投影直线
    plot(i,T(1)*i,'k-');
%体重的投影直线
    plot(i,T(2)*i,'m-.');
    hold on;
end
hold off;
%%%%%%%%%%%%%%%%%%%%%%%% Testing End %%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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