模式识别大作业

发布 2021-03-07 07:00:28 阅读 1703

一。问题重述。

利用fisher线性判别法和最近邻算法对sonar数据进行分类,并得出正确率。

二。fisher线性判别法思路。

用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值t,带入测试样本得到投影点y,将y与t相比,即可进行分类判别。

2.1 fisher准则函数中的基本参量。

<1>在d维x空间。

(1)各类样本的均值向量。

2)样本类内离散度矩阵和总样本类内离散度矩阵。

其中是对称半正定矩阵,而且当时通常是非奇异的。

3)样本类间离散度矩阵。

是对称半正定矩阵。

2>在一维y空间。

1)各类样本的均值。

2)样本类内离散度和总样本类内离散度。

我们希望投影后,在一维y空间中各类样本尽可能分得开些,即希望两类均值之差越大越好,同时希望各类样本内部尽量密集,即希望类内离散度越小越好。

2.2 fisher准则函数及最佳变换向量的求取。

其中,是两类均值之差,是样本类内离散度。应寻找使尽可能大的作为投影方向。

2.3 阈值的选用。

三。最近邻算法思路。

在训练样本中找到测试样本的最近邻,然后根据这个最近邻样本的类别来决定测试样本的类别。最近邻算法所选择的邻居都是已经正确分类的对象。

若写成判别函数的形式,类的判别函数可以写作,则。

四。fisher线性判别法**。

mine_max=111

rock_max=97;

d=60;load ('导入mine数据。

load ('导入rock数据。

amine=rand(mine_max,1);

m=0;for i=1:mine_max

if amine(i,1)>=0.5

amine(i,1)=1;

m=m+1; %记录结果大于或等于0.5的个数(mine)

else amine(i,1)=0;

endend

arock=rand(rock_max,1);

s=0;for i=1:rock_max

if arock(i,1)>=0.5

arock(i,1)=1;

s=s+1; %记录结果大于或等于0.5的个数(rock)

else arock(i,1)=0;

endend

bmine=zeros(m,1);

cmine=zeros(mine_max-m,1);

j=0;t=0;

for i=1:mine_max

if amine(i,1)==1;

j=j+1;

bmine(j,1)=imine中下标为1的放在一个向量中。

elset=t+1

cmine(t,1)=imine中下标为0的放在一个向量中。

endend

brock=zeros(s,1);

crock=zeros(rock_max-s,1);

j=0;t=0;

for i=1:rock_max

if arock(i,1)==1;

j=j+1;

brock(j,1)=irock中下标为1的放在一个向量中

elset=t+1;

crock(t,1)=irock中下标为0的放在一个向量中

endend

dmine=zeros(1,60);

for i=1:60

for j=1:m

dmine(1,i)=dmine(1,i)+outmine(bmine(j,1),i);

endend

mm=dmine/m求解mine的类均值向量。

drock=zeros(1,60);

for i=1:60

for j=1:s

drock(1,i)=drock(1,i)+outrock(brock(j,1),i);

endend

mr=drock/s求解rock的类均值向量。

mm=mm';

mr=mr';

s_mine=zeros(d,d);

s_rock=zeros(d,d);

for i=1:m

s_mine=s_mine+(outmine(bmine(i,1),:mm)*(outmine(bmine(i,1),:mm)';

end求解mine的类内离散度矩阵。

for i=1:s

s_rock=s_rock+(outrock(brock(i,1),:mr)*(outrock(brock(i,1),:mr)';

end求解rock的类内离散度矩阵。

sw=s_mine+s_rock;

w_direction=sw^(-1)*(mm-mr);

w0=w_direction'*(mm+mr)/2;

x=-1:2;

y=-1:2;

hold on;

plot(x,y);

y=w0;plot(y,y,'xk阈值坐标。

text(0.6,0.5,'w');

text(-0.4,0,'rock');

text(0.4,0.2,'mine');

title('fisher');

xlabel('mine');

ylabel('rock');

emine=0;

erock=0;

for i=1:mine_max-m

y=w_direction'*outmine(cmine(i,1),:

if y>w0

plot(y,y,'og正确分类的mine样本的坐标。

else plot(y,y,'+m');

emine=emine+1错误分类的mine样本的个数。

endend

for i=1:rock_max-s

y=w_direction'*outrock(crock(i,1),:

if y plot(y,y,'oc正确分类的rock样本的坐标。

else plot(y,y,'+r');

erock=erock+1错误分类的rock样本的个数。

endend

text(-0.2,0.63,['errmine:' num2str(emine*100/(111-m))

text(-0.2,-0.43,['errrock:' num2str(emine*100/(97-s))

5.最近邻算法**。

load %导入mine数据。

load %导入rock数据。

max=10

for i=1:max用于计数,进行十次试验。

%从mine中选出55个随机数。

out_1 = round(randperm(111));

data_1=out_1(1:55);

mine_1= mine(data_1,1:60);

%从rock中选出48个随机数。

out_2 = round(randperm(97));

data_2=out_2(1:48);

rock_1 = rock(data_2,1:60);

%mine中测试样本

m=1;n=1;

for i=1:111

if find(data_1==imine中训练样本。

mine_1(m,:)mine(i,:)

m=m+1;

else mine_2(n,:)mine(i,:)mine中测试样本

n=n+1;

endend

%rock中测试样本

m=1;n=1;

for i=1:97

if find(data_2==irock中训练样本。

rock_1(m,:)rock(i,:)

m=m+1;

else rock_2(n,:)rock(i,:)rock中测试样本

n=n+1;

endend

%求mine_2中各测试样本到训练样本mine_1和rock_1的欧氏距离。

for i=1:56

a1=mine_2(i,:)

b1=mine_2(i,:)

for j=1:55

c11=mine_1(j,:)

d1_1(i,j)=norm(a1-c11);

endmine_2中的测试样本到mine_1中训练样本的距离矩阵。

for j=1:48

c12=rock_1(j,:)

模式识别大作业

作业1 用身高和 或体重数据进行性别分类 一 基本要求 用和的数据作为训练样本集,建立bayes分类器,用测试样本数据对该分类器进行测试。调整特征 分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。具体做法 1 应用单个特征进行实验 以 a 身高或者 b 体重数...

模式识别大作业

一 题目。对sonar和wdbc中数据 如表1所示 进行分类,并将实验结果填入表2。不降维方法用邻近法,降维用fisher判别 表1 实验数据。表2实验结果 准确率 二 fisher线性判别法。fisher线性判别分析的基本思想 通过寻找一个投影方向 线性变换,线性组合 将高维问题降低到一维问题来解...

模式识别大作业

iris数据聚类分析。c均值和模糊c均值。1 问题描述。iris数据集包含150个数据,共有3类,每一类有50个数据,其每个数据有四个维度,每个维度代表鸢尾花特征 萼片,花瓣的长度 中的一个,其三类数据名称分别setosa,versicolor,virginica,这些就是 iris数据集的基本特征...