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

📄 fisherlda.m

📁 用mushrooms数据对模式识别课程讲述的各种模式分类方法[线性分类
💻 M
字号:
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));endfor r = 1:5  %进行五次实验%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%将样本分为测试样本,第一类训练样本,第二类训练样本%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%p = randperm(2000);%对1:2000的整数随机排序experiment_test=samples(p(1:500),:);%测试样本exper_test=experiment_test(:,2:end);%测试样本,不带标签experiment_train=samples(p(501:2000),:);%训练样本index1=find(experiment_train(:,1)==1);%找到训练样本中第一类的行号index2=find(experiment_train(:,1)==2);%找到训练样本中第二类的行号exper_train_class1=experiment_train(index1,2:end);%训练样本里属于第一类的样本,不带标签exper_train_class2=experiment_train(index2,2:end);%训练样本里属于第二类的样本,不带标签%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算各类的均值,散布矩阵,求投影方向W%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%mean1=mean(exper_train_class1); %计算第一类训练样本的均值mean2=mean(exper_train_class2); %计算第二类训练样本的均值%计算各类训练样本的散布矩阵,它是协方差矩阵的(m-1)倍,m是各类的训练样本数[m1 n1]=size(exper_train_class1);[m2 n2]=size(exper_train_class2);S1=(m1-1).*cov(exper_train_class1);   S2=(m2-1).*cov(exper_train_class2);  SW=S1+S2; %也可用下面的方法直接算散布矩阵% S1=zeros(n1,n1);% S2=zeros(n2,n2);% for i=1:m1%     Rtemp=exper_train_class1(i,:);%     S1=S1+(Rtemp-mean1)'*(Rtemp-mean1);%计算一类的散布矩阵% end% for i=1:m2%     Rtemp=exper_train_class2(i,:);%     S2=S2+(Rtemp-mean2)'*(Rtemp-mean2);%计算二类的散布矩阵% endSW=S1+S2;%计算总类内散布矩阵W=inv(SW)*((mean1-mean2)');%计算投影方向W%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对训练样本与测试样本进行降维%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%traing_example_lda_1=W'*exper_train_class1';traing_example_lda_1=traing_example_lda_1';traing_example_lda_2=W'*exper_train_class2';traing_example_lda_2=traing_example_lda_2';test_example_lda=W'*exper_test';test_example_lda=test_example_lda';mean_1=mean(traing_example_lda_1);mean_2=mean(traing_example_lda_2);point=(mean_1+mean_2)/2; %找到分类的阈值%%%%%%%%%%%%%%%%%%%%%%分类%%%%%%%%%%%%%%%%%%%%%%for j=1:size(exper_test,1);    if test_example_lda(j,1)>point        result_class(j,1)=1;    else        result_class(j,1)=2;    endend %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%分析结果%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[correct(r,1),error(r,1),ROC(r,:)] = analyse_result(experiment_test,result_class);end%将结果放到一个数组中,便于观察数据correct = correct';error = error';ROC = ROC';result = [correct;error;ROC];result = result';

⌨️ 快捷键说明

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