模式识别与智能信息处理实践实验报告.docx

上传人:b****2 文档编号:3530357 上传时间:2023-05-06 格式:DOCX 页数:33 大小:28.53KB
下载 相关 举报
模式识别与智能信息处理实践实验报告.docx_第1页
第1页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第2页
第2页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第3页
第3页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第4页
第4页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第5页
第5页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第6页
第6页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第7页
第7页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第8页
第8页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第9页
第9页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第10页
第10页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第11页
第11页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第12页
第12页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第13页
第13页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第14页
第14页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第15页
第15页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第16页
第16页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第17页
第17页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第18页
第18页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第19页
第19页 / 共33页
模式识别与智能信息处理实践实验报告.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

模式识别与智能信息处理实践实验报告.docx

《模式识别与智能信息处理实践实验报告.docx》由会员分享,可在线阅读,更多相关《模式识别与智能信息处理实践实验报告.docx(33页珍藏版)》请在冰点文库上搜索。

模式识别与智能信息处理实践实验报告.docx

模式识别与智能信息处理实践实验报告

《模式识别与智能信息处理实践》

实验报告书

专业:

               

学号:

                

姓名:

                

计算机科学与工程学院

2011.6.20

实验一 聚类分析

一、实验目的

通过聚类分析实验,加深对聚类分析基本思想、方法的理解和掌握。

二、实验内容

了解动态、静态聚类算法的特点;

熟练掌握k-均值算法或层次聚类算法;

编写能对实际模式样本正确分类的算法程序。

掌握动态聚类算法的基本思想;

认识类别数、初始类心的选择对k-均值算法聚类结果的影响;

编写能对实际模式样本正确分类的k-均值算法程序。

三、方法手段

设类别数为k,选取k个初始聚类中心,按最小距离原则将各模式分配到k类中的某一类,不断地计算类心和调整各模式的类别使每个模式特征矢量到其所属类别中心的距离平方之和最小。

四、k-均值算法

(1)从D中随机取k个元素,作为k个簇的各自的中心。

(2)分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

(3)根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。

(4)将D中全部元素按照新的中心重新聚类。

(5)重复第4步,直到聚类结果不再变化。

五、k-均值程序运行结果

(1)改变初始类心,观察对聚类结果的影响

若选初始类心是[123]时的结果为其分为1类共39个,分为2类共61个,分为3类共50个,其中被分为第1类的样本为{51  53  78 101 103 104 105 106 108 109 110 111 112 113 116 117 118 119 121 123 125 126 129 130 131 132 133 135 136 137 138 140 141 142 144 145 146 148 149},被分为第2类的样本为{52  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73 74  75  76  77  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95 96  97  98  99 100 102 107 114 115 120 122 124 127 128 134 139 143 147 150},被分为第3类的样本为{1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21 22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42 43  44  45  46  47  48  49  50}。

若选初始类心是[245]时其聚类结果为其分为1类共96个,分为2类共22个,分为3类共个32,其中被分为第1类的样本为{51  52  53  54  55  56  57  59  60  62  63  64  65  66  67  68  69  70  71 72  73 74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  95  96  97  98 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150},被分为第2类的样本为{2  3  4  7  9  10  13  14  25  26  30  31  35  39  42  43  46  48  58  61  94  99},被分为第3类的样本为{1  5  6  8  11  12  15  16  17  18  19  20  21  22  23 24  27  28  29  32  33  34  36  37  38  40  41  44  45  47  49  50}。

可见,初始类心的选择对于K均值算法的影响较大。

(2)改变类别数k,比较其对类内距离平方和的大小的影响

若k=3且选初始类心是[123]时,其最终各类中心的距离为[1.1657  0.8230  4.0783],若k=4且选初始类心是[1234]时,其最终各类中心的距离为[1.3049  0.4917  4.0783  1.3928],可见,改变类别数k,其对类内距离平方和的大小有直接的影响,且k越大,其类内距离平方和距离越小。

六、实验总结

影响k-均值算法结果的因素有:

初始类心的选择以及k值的选择,且k-均值算法适用于k值已知的情况,即类别号已知的情况。

七、Kmeans程序

functiony=my_Kmeans(k,mid)

k=3;%类数

mid=[123];%随便给三个聚类中心

%从文本文件读入数据放入X中

loadfisheriris;X=meas;k=3;mid=[123];%Iris测试数据集

num=size(X,1);%获得X维数大小

fori=1:

k

Z(i,:

)=X(mid(i),:

);%获取k个聚类中心的初始坐标 

end

%计算新的聚类中心,K-均值算法的核心部分

temp=[];

while(~isequal(Z,temp)) %聚类中心是否变化,若不变化则停止循环

temp=Z;

class=cell(k,1);%初始化类样本class

value=cell(k,1);%初始化类样本的坐标value

forj=1:

num

fort=1:

k

D(t)=dist(X(j,:

),Z(t,:

)');%计算每个样本到类中心的距离

[minu,index]=min(D);%求出离聚类中心最小的一个样本

end

class{index}=cat(1,class{index},j);%将该样本归于一类

value{index}=cat(1,value{index},X(j,:

));%存放该类样本的坐标

end

fori=1:

k   

Z(i,:

)=mean(value{i});%计算k类样本的均值,更新聚类中心

end

end

celldisp(class);%显示Kmeans聚类结果

D%显示最终类间距离

实验二判别域代数界面方程法

一、实验目的

通过实验加深对判别域代数界面方程法基本思想、方法的认识,了解线性判别函数的分类能力,熟练掌握感知器算法,或H-K算法,或累积势函数分类法,以及它们各自的适用条件,加深对有监督训练、线性可分、解空间、权空间等概念的理解,编写能对实际模式样本正确分类的算法程序。

二、实验内容

编写能对实际模式样本正确分类的感知器算法,或H-K算法,或累积势函数分类法的算法程序,能对实际模式样本进行正确分类。

三、方法手段:

设已知类别模式特征矢量集为{x1,x2,…,xN},类别数为c。

感知器算法是基于一次准则函数的梯度下降法。

从任意初始解矢量w0出发,利用产生错分的样本对解矢量进行迭代校正:

wk=wk-1+xi,i=1,2,…,c,k=0,1,2…,=常数,从而解得线性判决函数d(x)=w’x的解矢量w.

四、感知器算法

1、算法思想

校正方法实际上是最优化技术中的负梯度下降法。

该算法也是人工神经网络理论中的线性阈值神经元的学习算法。

2、算法原理步骤

设给定一个增广的训练模式集

,其中每个模式类别已知,它们分属

类和

类。

⑴置步数

,令增量

某正的常数,分别赋给增广权矢量初值

的各分量较小的任意值。

⑵输入训练模式

⑶计算判别函数值

⑷调整增广权矢量,规则是

①如果

,则

;(偏小,故加)

②如果

,则

;(偏大,故减)

③如果

,或

,则

(分类正确,不校正)

⑸令

如果

,返至⑵。

如果

,检验判别函数

是否都能正确分类。

若是,结束;若不是,令

,返至⑵。

如果训练模式已经符号规范化,即

已乘以-1(包括增广分量1),则校正权矢量的规则可统一为

在用全部模式训练完一轮后只要还有模式被判错,则需要进行第二轮迭代,用全部训练模式再训练一次,建立新的权矢量。

如果对训练模式还有错分的,则进行第三轮迭代,余类推,直至对所有训练模式均能正确分类为止,此时的

即为所求的权矢量。

五、感知器算法实验结果

(1)改变权矢量初值,观察对算法的影响

已知w1:

X1=(00)’,X2=(10)’,X3=(11)’,X4=(12)’;

w2:

X5=(13)’,X6=(23)’,X7=(32)’,X8=(33)’,

若步长因子=1不变,权初始值取w=[000],则需迭代eth0=15步,若权初始值取w=[111],则需迭代eth0=18步,可见,权初始值选取的不同,将直接导致算法的收敛速度不同。

(2)改变步长因子,观察对算法的影响

若权初始值取w=[000]不变,取步长因子=1,则需迭代eth0=15步,若取步长因子=0.1,则需迭代eth0=16步,可见,步长因子选取的不同,也将直接导致算法的收敛速度不同。

(3)算法的适用性

若已知w1:

X1=(13)’,X2=(23)’,X3=(11)’,X4=(12)’;

w2:

X5=(00)’,X6=(10)’,X7=(32)’,X8=(33)’,则导致该程序死循环,可见,感知器算法只适用两类样本线性可分的条件下(图1),若希望在两类样本线性不可分的条件下,构造一判决平面,则可考虑使用势函数。

图1感知器算法分类结果

图2线性不可分的情况

六、实验程序

functiony=my_preception(W1,W2)

%感知器算法,对两类问题生成线性判别函数

%注意:

前提是两类可线性判别,否则将死循环

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

W1=[00;10;11;12];%w1类中的样本

W2=[13;23;32;33];%w2类中的样本

%%%%%%初始化

w=[000];  %任取w初值

c=1;     %任取校正增量系数c=1;

%%%%%%感知器算法部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%增广样本w1和w2乘(-1)

[m,n]=size(W1);

fori=1:

m

W1(:

n+1)=1;%w1增广

end

[m,n]=size(W2);

fori=1:

m

W2(:

n+1)=1;%w2增广

end

W2=-W2;%取反

%将增广向量转换成元组,便于处理

M=ones(1,m);

w1=mat2cell(W1,M,n+1);

w2=mat2cell(W2,M,n+1);

X=cat(1,w1,w2);%合并两类增广样本

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

eth0=0;  %迭代次数

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%感知器算法核心部分

[m,n]=size(X);

temp1=[];temp2=1;%随意两个赋不等的值

while(~isequal(temp1,temp2)) %判断权值是否变换化,若不变化,则终止循环

eth0=eth0+1;

temp2=temp1;

cleartemp1;%不清除此变量不行啊!

fori=1:

m

temp1{i,1}=w;

if(w*X{i}'<=0)%w乘X{i}的转置   

w=w+c*X{i};   %若小于0更新权值

end

end

end    

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

w  %显示线性分类器权值

eth0 %显示迭代次数

 

2

实验三 Bayes分类器设计

一、实验目的

通过实验,加深对统计判决与概率密度估计基本思想、方法的认识,了解影响Bayes分类器性能的因素,掌握基于Bayes决策理论的随机模式分类的原理和方法。

二、实验内容

设计Bayes决策理论的随机模式分类器。

三、方法手段

Bayes分类器的基本思想是依据类的概率、概密,按照某种准则使分类结果从统计上讲是最佳的。

换言之,根据类的概率、概密将模式空间划分成若干个子空间,在此基础上形成模式分类的判决规则。

准则函数不同,所导出的判决规则就不同,分类结果也不同。

使用哪种准则或方法应根据具体问题来确定。

四、Bayes算法

1.实验原理

多元正太分布的概率密度函数由下式定义

由最小错误概率判决规则,可得采用如下的函数作为判别函数

这里,

为类别

发生的先验概率,

为类别

的类条件概率密度函数,而N为类别数。

设类别

,i=1,2,……,N的类条件概率密度函数

,i=1,2,……,N服从正态分布,即有

~

,那么上式就可以写为

由于对数函数为单调变化的函数,用上式右端取对数后得到的新的判别函数替代原来的判别函数

不会改变相应分类器的性能。

因此,可取

显然,上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。

这样,判别函数

可简化为以下形式

2.实验步骤

1、求出两类样本的均值

2、求每一类样本的协方差矩阵

式中,l代表样本在类中的序号,其中

代表

类的第l个样本,第j个特征值;

代表

类的

个样品第j个特征的平均值

代表

类的第l个样品,第k个特征值;

代表

类的

个样品第k个特征的平均值。

类的协方差矩阵为

3、计算出每一类的协方差矩阵的逆矩阵

以及协方差矩阵的行列式

4、求出每一类的先验概率

5、将各个数值代入判别函数

判别边界为 

五、Bayes分类器实验结果

已知(图1)数据a=[0.3760  0.0240  0.2440 -0.1740  0.0460 -0.3940  0.3760  0.7720  0.2660  0.5080 -0.4380 -0.0640 0.8160  0.5960  0.1120  0.3540  0.8380 -0.7680  0.4200 -0.7900];其满足正态分布(图2),

1.最小错误率贝叶斯决策

图1样本数据

图2样本的类条件概率

根据最小错误率准侧,计算其后验条件概率(图3),通过程序运行出结果细胞分类结果为:

10001000000000000110,其中,0为判成正常细胞,1为判成异常细胞。

图3后验条件概率

2.最小风险贝叶斯决策

根据最小风险判别准侧,其损失函数赋值为r=[010000;20000],则计算其条件风险概率(图4)通过程序运行出结果细胞分类结果为:

11111110111101110111,其中,0为判成正常细胞,1为判成异常细胞。

图4条件风险概率

3.两类分类器结果不同原因分析

由最小错误率的贝叶斯判决和基于最小风险的贝叶斯判决得出图形中的分类结果可以看出,样本0.0240,0.2440等在前者中被分为“正常细胞”,在后者被分为“异常细胞”,分类结果不同。

因为在给予最小风险贝叶斯判决中,影响决策结果的因素多了损失r这一项,所以当结合最小风险贝叶斯决策表进行计算时,‘损失’起了主导作用,导致出现两者结果的不一致。

六、Bayes分类器程序代码

 

functiony=my_bayes(n,a)

%%%%%%%%%%%%%最小错误率贝叶斯决策

%构造实验数据

n=20; %样本数

a=(round(100*rand(n,1))/100)*2.2-0.9;

%样本数为n,特征数为1,数据在-0.9与1.3之间

figure

plot(1:

n,a,'rx')

xlabel('样本数');

ylabel('生化化验值');

title('样本数据:

生化化验值');

pause;

%先验概率

P=[0.90.1];

%作类条件概率密度曲线p(x|wi)

x=-0.9:

0.01:

1.3;

px(1,:

)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2);

px(2,:

)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1).^2);

figure;

plot(x,px(1,:

),'b',x,px(2,:

),'r--');

xlabel('生化化验值');

ylabel('概率密度');

title('类条件概率密度曲线')

axistight;

pause;

%作后验概率曲线

fori=1:

2

pwx(i,:

)=px(i,:

)*P(i)./(px(1,:

)*P

(1)+px(2,:

)*P

(2));

end

figure;

plot(x,pwx(1,:

),'b',x,pwx(2,:

),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

axistight;

pause;

%计算给定生化化验值的类条件概率密度曲线

forj=1:

n

s=a(j);

PXW1=spline(x,px(1,:

),s);

PXW2=spline(x,px(2,:

),s);

PXW=[PXW1,PXW2];

disp('样本')

s

 

%计算后验概率,判断输出

fori=1:

2

Pwx(i)=PXW(i)*P(i)/(PXW

(1)*P

(1)+PXW

(2)*P

(2));

end

disp('后验概率P(wi|x)=')

Pwx

plot(x,pwx(1,:

),'b',x,pwx(2,:

),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

holdon

plot(s,Pwx

(1),'or',s,Pwx

(2),'ob');

axistight;

holdoff

ifPwx

(1)>Pwx

(2)

w(j,1)=s;

disp('正常人')

else

w(j,2)=s;

disp('感染病人')

end

pause;

end

disp('========================================')

disp('正常人   感染病人')

w

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%最小风险贝叶斯

n=20; %样本数

figure

plot(1:

n,a,'rx')

xlabel('样本数');

ylabel('生化化验值');

title('样本数据:

生化化验值');

pause;

%先验概率

P=[0.90.1];

%作类条件概率密度曲线p(x|wi)

x=-0.9:

0.01:

1.3;

px(1,:

)=(1/(sqrt(2*pi)*0.3))*exp(-0.5*(x/0.3).^2);

px(2,:

)=(1/(sqrt(2*pi)*0.1))*exp(-0.5*((x-1)/0.1).^2);

figure;

plot(x,px(1,:

),'b',x,px(2,:

),'r--');

xlabel('生化化验值');

ylabel('概率密度');

title('类条件概率密度曲线')

axistight;

pause;

%作后验概率曲线

fori=1:

2

pwx(i,:

)=px(i,:

)*P(i)./(px(1,:

)*P

(1)+px(2,:

)*P

(2));

end

figure;

plot(x,pwx(1,:

),'b',x,pwx(2,:

),'r--');

xlabel('生化化验值');

ylabel('后验概率');

title('后验概率曲线')

axistight;

pause;

%损失函数

r=[010000;20000];

%作条件风险曲线

fori=1:

2

R(i,:

)=r(i,1)*pwx(1,:

)+r(i,2)*pwx(2,:

);

end

figure;

plot(x,R(1,:

),'b',x,R(2,:

),'r--');

xlabel('生化化验值');

ylabel('条件风险');

title('条件风险曲线')

axistight;

pause;

%计算给定生化化验值的条件风险

forj=1:

n

s=a(j);

PXW1=spline(x,px(1,:

),s);

PXW2=spline(x,px(2,:

),s);

PXW=[PXW1,PXW2];

disp('样本')

s

 

%计算后验概率

fori=1:

2

Pwx(i)=PXW(i)*P(i)/(PXW

(1)*P

(1)+PXW

(2)*P

(2));

end

 

%计算条件风险,判断输出

fori=1:

2

Rx(i,:

)=r(i,1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2