一。问题重述。
利用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数据集的基本特征...