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

📄 parzen.m

📁 在这里输入需要翻实现parzen 库中找出与当前情况距离最近的样本的方法.把距离定义为相匹配的输入事例的特征加权和译的文字
💻 M
字号:
%Parzen窗非参数估计
clear all;

load FEMALE.txt;
load MALE.txt;

%样本的描述
PreFp=0.5;  %女生先验概率
PreMp=0.5;  %男生先验概率
FemaleNcount=0;   %计数器
MaleNcount = 0;
Ncount = 0;
Hn = 2.37;     %方窗窗宽
Kn = sqrt(50);
PrazenFemaleProk = zeros(2,50);
PrazenMaleProk = zeros(2,50);

fid=fopen('test1.txt','r');
TEST1=fscanf(fid,'%f %f %c',[3,inf]);
TEST=TEST1';
fclose(fid);
figure(1);
for i=1:35
    for j = 1:50
PrazenFemaleProk(1,j) =1/sqrt(2*pi)*exp(-1/2*(TEST(i,1)-FEMALE(j,1))^2);
PrazenMaleProk(1,j) =1/sqrt(2*pi)*exp(-1/2*(TEST(i,1)-MALE(j,1))^2);
    end
    FemaleProk = sum(PrazenFemaleProk,2);
    MaleProk = sum(PrazenMaleProk,2);
    FemalePro = FemaleProk(1,1)/50;
    MalePro = MaleProk(1,1)/50;
    if(FemalePro*PreFp>MalePro*PreMp)
        plot(i,TEST(i,1),'b*');
        if TEST(i,3)==109
            Ncount=Ncount+1;
            text('String','(应该为男)',...
                 'Position',[i,TEST(i,1)],...
                 'FontSize',8);
        end
    else 
        if(FemalePro*PreFp<MalePro*PreMp)
        plot(i,TEST(i,1),'k+');
        if TEST(i,3)==102
            Ncount=Ncount+1;
            text('String','(应该为女)',...
                 'Position',[i,TEST(i,1)],...
                 'FontSize',8);
        end
        end
    end
    hold on;
end
title('基于Parzen窗非参数估计(标准正太分布)的贝叶斯分类(*为女生,+号为男生)');
xlabel('体重(Kg)'),ylabel('身高(Cm)');
axis([0 36 140 200]);
figure(2);
for i=1:35
    for j = 1:50
       if(abs(TEST(i,1)-FEMALE(j,1))<(Hn/2)^i)
          FemaleNcount = FemaleNcount +1;
       else
           if(abs(TEST(i,1)-MALE(j,1))<(Hn/2)^i)
          MaleNcount = MaleNcount + 1;
           end
       end
    end
    FemalePro =FemaleNcount /Kn;
    MalePro =MaleNcount/Kn;
    if(FemalePro*PreFp>MalePro*PreMp)
        plot(i,TEST(i,1),'b*');
        if TEST(i,3)==109
            text('String','(应该为男)',...
                 'Position',[i+0.5,TEST(i,1)],...
                 'FontSize',8);
        end
    else 
        if(FemalePro*PreFp<MalePro*PreMp)
        plot(i,TEST(i,1),'k+');
        if TEST(i,3)==102
            text('String','(应该为女)',...
                 'Position',[i+0.5,TEST(i,1)],...
                 'FontSize',8);
        end
        end
    end
    hold on;
end
title('基于Parzen窗非参数估计(方窗)的贝叶斯分类(*为女生,+号为男生)');
xlabel('体重(Kg)'),ylabel('身高(Cm)');
axis([0 36 140 200]);  
ErrorRate=Ncount/35*100;
sprintf('%s%d,%s%0.2f%s','分类错误个数为:',Ncount,'该先验概率下的错误率为:',ErrorRate,'%')

⌨️ 快捷键说明

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