模式识别大作业02125128 修改版

发布 2021-03-05 13:20:28 阅读 2016

模式识别大作业。

班级 021252

姓名谭红光

学号 02125128

1.线性投影与fisher准则函数。

各类在维特征空间里的样本均值向量:

通过变换映射到一维特征空间后,各类的平均值为:

映射后,各类样本“类内离散度”定义为:

显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好。因此,定义fisher准则函数:

使最大的解就是最佳解向量,也就是fisher的线性判别式。

从的表达式可知,它并非的显函数,必须进一步变换。

已知:,,依次代入上两式,有:

所以:其中7)是原维特征空间里的样本类内离散度矩阵,表示两类均值向量之间的离散度大小,因此,越大越容易区分。

将(4.5-6)和(4.5-2)代入(4.5-4)式中:

其中9)因此10)

显然11)称为原d维特征空间里,样本“类内离散度”矩阵。

是样本“类内总离散度”矩阵。

为了便于分类,显然越小越好,也就是越小越好。

将上述的所有推导结果代入表达式:

可以得到:其中,是一个比例因子,不影响的方向,可以删除,从而得到最后解:

就使取得最大值,可使样本由维空间向一维空间映射,其投影方向最好。是一个fisher线性判断式。这个向量指出了相对于fisher准则函数最好的投影线方向。

2.近邻法线简述。

最近邻(nearest neighbor,knn)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

knn算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 knn方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。

由于knn方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,knn方法较其他方法更为适合。

将与测试样本最近邻样本的类别作为决策的结果。对一个类别问题,每类有个样本,,则第类的判别函数为:

因此,最近邻决策规则:

若2)3.设计思路。

根据公式用matlab计算出w0,然后对测试数据进行与w0的比较进行分类。

在用欧式距离进行分类。

流程图:算法的流程设计图。

2.程序**:

mine=xlsread('c:\users\administrator\desktop\导入mine数据。

rock=xlsread('c:\users\administrator\desktop\导入rock数据。

amine=randsample(111,55,'false产生55个随机数作为mine行下标。

bmine=zeros(55,60);

for i=1:55

for j=1:60

bmine(i,j)=mine(amine(i,1),j);

mine(amine(i,1),j)=2;

endend选出mine训练样本。

dmine=zeros(56,60);

r=1;for i=1:111

if mine(i,1)==2

i=i+1;

else for j=1:60

dmine(r,j)=mine(i,j);

endr=r+1;

endend选出mine测试样本。

cmine=zeros(1,60);

for i=1:60

for j=1:55

cmine(1,i)=cmine(1,i)+bmine(j,i);

endend

arock=randsample(97,48,'false');

brock=zeros(48,60);

for i=1:48

for j=1:60

brock(i,j)=rock(arock(i,1),j);

rock(arock(i,1),j)=2;

endend选出rock的训练样本。

drock=zeros(49,60);

p=1;for i=1:97

if rock(i,1)==2

i=i+1;

else for j=1:60

drock(p,j)=rock(i,j);

endp=p+1;

endend选出rock的测试样本。

crock=zeros(1,60);

for i=1:60

for j=1:48

crock(1,i)=crock(1,i)+brock(j,i);

endend

fisher线性判别。

mm=cmine/55mine的类均值向量。

mr=crock/48rock的类均值向量。

mm=mm';

mr=mr';

s_mine=zeros(60,60);

s_rock=zeros(60,60);

for i=1:55

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

endmine的类内离散度矩阵。

for i=1:48

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

endrock的类内离散度矩阵。

sw=s_mine+s_rock;

w1=inv(sw)*(mm-mr最佳投影方向。

w0=w1'*(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('fisher02125128');

xlabel('mine');

ylabel('rock');

测验分类器。

emine=0;

erock=0;

for i=1:56

y=w1'*dmine(i,:)

if y>w0

plot(y,y,'og分对的mine样本的坐标。

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

emine=emine+1mine分错的个数。

endend

for i=1:49

y=w1'*drock(i,:)

if y plot(y,y,'oc分对的rock样本的坐标。

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

erock=erock+1rock分错的个数。

endend

disp(w0);

disp(erock/97);

disp(emine/111);

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

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

最近临法。eemine=0;

eerock=0;

for i=1:56

min1=inf;

min2=inf;

for j=1:55

x=norm(dmine(i,1:60)-bmine(j,:)

模式识别大作业

一。问题重述。利用fisher线性判别法和最近邻算法对sonar数据进行分类,并得出正确率。二。fisher线性判别法思路。用训练样本求出d维空间到一维空间的投影方向w,进而求出样本均值,进而可求出阈值t,带入测试样本得到投影点y,将y与t相比,即可进行分类判别。2.1 fisher准则函数中的基本...

模式识别大作业

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

模式识别大作业

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