parzen_smooth.m

来自「用mushrooms数据对模式识别课程讲述的各种模式分类方法[线性分类」· M 代码 · 共 81 行

M
81
字号
clc;clear;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取数据,取16个特征%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%samples = textread('data2000.txt');samples = samples(:,[1:6,9:15,19:22]);  %17列 第1列标号,16列特征%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对样本进行归一化处理%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[ms ns]=size(samples);TMax=max(samples);TMin=min(samples);% 第一列是样本标签,从第二列开始归一化for i=2:ns    samples(:,i)=(samples(:,i)-TMin(i))/(TMax(i)-TMin(i));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%将样本分为测试样本,第一类训练样本,第二类训练样本%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%p = randperm(2000);%对1:2000的整数随机排序experiment_test=samples(p(1:100),:);%测试样本exper_test=experiment_test(:,2:ns);%测试样本,不带标签experiment_train=samples(p(101:300),:);%训练样本index1=find(experiment_train(:,1)==1);%找到训练样本中第一类的行号index2=find(experiment_train(:,1)==2);%找到训练样本中第二类的行号exper_train_class1=experiment_train(index1,2:ns);%训练样本里属于第一类的样本,不带标签exper_train_class2=experiment_train(index2,2:ns);%训练样本里属于第二类的样本,不带标签[m n]=size(exper_test);[m1 n1]=size(exper_train_class1);[m2 n2]=size(exper_train_class2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算类条件概率密度%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%构造一个正态函数,以每个训练样本为中心(均值)                                                    SIGMA=eye(16);R1=zeros(m,1);%记录待测样本在第一类的测试结果R2=zeros(m,1);%记录待测样本在第二类的测试结果%对第一类Result=zeros(m,1);%记录最后分类结果for i=1:m    for j=1:m1        R1(i)=R1(i)+mvnpdf(exper_test(i,:),exper_train_class1(j,:),SIGMA);    endendR1=R1./m1;%对第二类for i=1:m    for j=1:m2        R2(i)=R2(i)+mvnpdf(exper_test(i,:),exper_train_class2(j,:),SIGMA);    endendR2=R2./m2;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%画类条件概率密度图,并分类%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%绘图plot(R1,'-r','LineWidth',2);hold on;plot(R2,'-b','LineWidth',2);xlabel ('待测样本'); ylabel ('类条件概率密度 P(x|wi)');title ('类条件概率密度图');%分类for i=1:m    if R1(i,1)>R2(i,1)        Result(i,1)=1;    else        Result(i,1)=2;    endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%分析结果%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[correct,error,ROC] = analyse_result(experiment_test,Result);

⌨️ 快捷键说明

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