模式识别大作业

发布 2021-03-07 07:02:28 阅读 3539

一. 题目。

对sonar和wdbc中数据(如表1所示)进行分类,并将实验结果填入表2。不降维方法用邻近法,降维用fisher判别:

表1 实验数据。

表2实验结果(准确率)

二.fisher线性判别法。

fisher线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。

fisher线性判别分析,就是通过给定的训练数据,确定投影方向w和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。

1 基本原理。

1)w的确定。

各类样本均值向量mi

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

样本类间离散度矩阵。

在投影后的一维空间中,各类样本均值。样本类内离散度和总类内离散度。样本类间离散度。

fisher准则函数满足两个性质:

投影后,各类样本内部尽可能密集,即总类内离散度越小越好。

投影后,各类样本尽可能离得远,即样本类间离散度越大越好。

根据这个性质确定准则函数,根据使准则函数取得最大值,可求出w:。

2)阈值的确定。

实验中采取的方法:。

3)fisher线性判别的决策规则。

对于某一个未知类别的样本向量x,如果y=wt·x>y0,则x∈w1;否则x∈w2。

2. fisher线性判别实验流程图。

data=importdata('d:\'

data1=

clear data;

data=data1;

clear data1;

a(98,60)=0;

b(110,60)=0;

count1=1;

count2=1;

for i=1:208

if data(i,61)==1

a(count1,:)data(i,1:60);

count1=count1+1;

elseb(count2,:)data(i,1:60);

count2=count2+1;

endend

clear count1 count2 i

m1(1,60)=0;

m2(1,60)=0;

s1(60,60)=0;

s2(60,60)=0;

for i=1:49

m1=m1+a(i,:)

endfor i=1:55

m2=m2+b(i,:)

endm1=m1/49;

m2=m2/55;

m1=m1';

m2=m2';

for i=1:49

s1=s1+(a(i,:)m1)*(a(i,:)m1)';

endfor i=1:55

s2=s2+(b(i,:)m2)*(b(i,:)m2)';

endsw=s1+s2;

w=inv(sw)*(m1-m2);

w0=(w'*m1+w'*m2)/2;

y1(1,49)=0;

y2(1,55)=0;

for i=1:49

y1(1,i)=w'*a(49+i,:)

endfor i=1:55

y2(1,i)=w'*b(55+i,:)

endcount1=0;

count2=0;

for i=1:49

if y1(1,i)>w0

count1=count1+1;

endend

for i=1:55

if y2(1,i)count2=count2+1;

endend

这里选取了类别1的前49组和类别2的前55组做训练样本,选取类别1的后49组和类别2的后55组做测试样本。通过计算得到的准确率为65.38%。

于是再随机抽取类别1的49组合类别2的55组做训练样本,而把剩余的作为测试样本,得到的准确率分别为:69.23%,76.

92%,81.73%,81.73%。

求其平均得到的准确率为:75%。

d=importdata('d:\'

data=count1=1;

count2=1;

data1(357,30)=0;

data2(212,30)=0;

for i=1:569

if strcmp('m')

data2(count2,:)data(i,:)

count2=count2+1;

elsedata1(count1,:)data(i,:)

count1=count1+1;

endend

clear count1 count2 d i

clear data;

sample1(250,30)=0;

sample2(150,30)=0;

test1(107,30)=0;

test2(62,30)=0;

for i=1:357

if i<=250

sample1(i,:)data1(i,:)

elsetest1(i-250,:)data1(i,:)

endend

for i=1:212

if i<=150

sample2(1,:)data2(i,:)

elsetest2(i-150,:)data2(i,:)

endend

m1(1,30)=0;

m2(1,30)=0;

for i=1:250

m1=m1+sample1(i,:)

endm1=m1';

m1=m1/250;

for i=1:212

if i<=150

sample2(i,:)data2(i,:)

elsetest2(i-150,:)data2(i,:)

endend

m2(1,30)=0;

for i=1:150

m2=m2+sample2(i,:)

endm2=m2';

m2=m2/150;

s1(30,30)=0;

s2(30,30)=0;

for i=1:250

s1=s1+(sample1(i,:)m1)*(sample1(i,:)m1)';

endfor i=1:150

s2=s2+(sample2(i,:)m2)*(sample2(i,:)m2)';

endsw=s1+s2;

w=inv(sw)*(m1-m2);

y1(1,107)=0;

y2(1,62)=0;

for i=1:107

y1(1,i)=w'*test1(i,:)

endfor i=1:62

y2(1,i)=w'*test2(i,:)

endw0=(w'*m1+w'*m2)/2;

count1=0;

count2=0;

for i=1:107

if y1(1,i)>w0

count1=count1+1;

endend

for i=1:62

if y2(1,i)count2=count2+1;

endend

这里选取了类别1的前250组和类别2的前150组做训练样本,选取类别1的后107组和类别2的后62组做测试样本。通过计算得到的准确率为97.63%。

于是再随机抽取类别1和类别2的训练样本,而把剩余的作为测试样本,做2次测试。得到的准确率分别为:95.

98%,96.24%

求其平均得到的准确率为:96.62%。

三.最近邻法。

1.算法简介。

最近邻法。设有c个类别的模式识别问题,每类有标明类别的样本ni个,i=1, 2, …c。

规定i类的判别函数为:

式中,表示i类样本集中第k个样本。

最近邻决策规则可以写为:若,则决策xj

2. 邻近法分类流程图。

data=importdata('d:\'

a(98,60)=0;

b(110,60)=0;

data1=

clear data;

data=data1;

clear data1;

count1=1;

count2=1;

for i=1:208

if data(i,61)==1

a(count1,:)data(i,1:60);

else end

endfor i=1:208

if data(i,61)==1

a(count1,:)data(i,1:60);

count1=count1+1;

elseb(count2,:)data(i,1:60);

count2=count2+1;

endend

clear count1 count2 i;

sample1=a(11:59,:)

sample2=b(11:65,:)

sample=[sample1',sample2'];

test1(49,60)=0;

test1(1:10,:)a(1:10,:)

test1(11:49,:)a(60:98,:)

test2(55,60)=0;

test2(1:10,:)b(1:10,:)

test2(11:55,:)b(66:110,:)

test=[test1’,test2’];

weight=zeros(104,104);

for i=1:104

for j=1:104

for m=1:60

weight(i,j)=weight(i,j)+(test(m,j)-sample(m,i))^2;

if m==60

weight(i,j)=weight(i,j)^(1/2);

endend

endend

a,b]=min(weight);

c1=0;c2=0;

clear i j m

for k=1:49

if b(k)<=49

c1=c1+1;

endend

for k=50:104

if b(k)>49

c2=c2+1;

endend

这里选类别1的11到59组,类别2的11到65组做测试样本。剩余的作为训练样本,通过计算得出准确率为85.58%。

然后再随机抽取类别1的49组合类别2的55组做训练样本,剩余的作为各组的测试样本,做4组测试,得到的准确率分别为:83.32%,82.

69%,81.73%,80.77%。

模式识别大作业

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

模式识别大作业

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

模式识别大作业

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