完整word版模式作业设计.docx

上传人:b****8 文档编号:13194620 上传时间:2023-06-11 格式:DOCX 页数:22 大小:312.50KB
下载 相关 举报
完整word版模式作业设计.docx_第1页
第1页 / 共22页
完整word版模式作业设计.docx_第2页
第2页 / 共22页
完整word版模式作业设计.docx_第3页
第3页 / 共22页
完整word版模式作业设计.docx_第4页
第4页 / 共22页
完整word版模式作业设计.docx_第5页
第5页 / 共22页
完整word版模式作业设计.docx_第6页
第6页 / 共22页
完整word版模式作业设计.docx_第7页
第7页 / 共22页
完整word版模式作业设计.docx_第8页
第8页 / 共22页
完整word版模式作业设计.docx_第9页
第9页 / 共22页
完整word版模式作业设计.docx_第10页
第10页 / 共22页
完整word版模式作业设计.docx_第11页
第11页 / 共22页
完整word版模式作业设计.docx_第12页
第12页 / 共22页
完整word版模式作业设计.docx_第13页
第13页 / 共22页
完整word版模式作业设计.docx_第14页
第14页 / 共22页
完整word版模式作业设计.docx_第15页
第15页 / 共22页
完整word版模式作业设计.docx_第16页
第16页 / 共22页
完整word版模式作业设计.docx_第17页
第17页 / 共22页
完整word版模式作业设计.docx_第18页
第18页 / 共22页
完整word版模式作业设计.docx_第19页
第19页 / 共22页
完整word版模式作业设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整word版模式作业设计.docx

《完整word版模式作业设计.docx》由会员分享,可在线阅读,更多相关《完整word版模式作业设计.docx(22页珍藏版)》请在冰点文库上搜索。

完整word版模式作业设计.docx

完整word版模式作业设计

1.1题目

给出K-均值算法的程序框图,编写程序,自选一组分别属于三类的三维模式样本(图2.13),并给它们进行聚类分析。

1.2算法原理

K-均值算法也称C-均值算法,是根据函数准则进行分类的聚类算法,基于使聚类准则最小化。

此处所用的聚类准则函数是聚类集中每一个样本点到该类聚类中心的距离平方和,对于第j个聚类集,准则函数定义为

式中,Sj表示第j个聚类集,也称聚类域,其聚类中心为

为第j个聚类集

中所包含的样本个数。

(1)任选K个初始聚类中心Z1

(1),Z2

(1),…,ZK

(1),

括号内的序号代表寻找聚类中心的迭代运算的次序号。

一般可选择样本集中前K个样本作为初始聚类中心。

(2)按最小距离原则将其余样本分配到K个聚类中心中的某一个,即:

,则

式中,k代表迭代运算次序号;K代表聚类中心的个数。

(3)计算各个聚类中心的新向量值

即以均值向量作为新的聚类中心。

这一步要分别计算K个聚类中心的样本均值向量,故该算法被称为K-均值算法。

(4)如果

,则回到

(2),将模式样本逐个重新分类,并重复迭代计算;如果

,算法收敛,计算完毕。

1.3程序流程图

 

1.4MATLAB程序代码

clearall;

clc;

data=input('请输入样本数据矩阵:

');

X=data(:

1);

Y=data(:

2);

figure

(1);

plot(X,Y,'r*','LineWidth',3);

axis([0908])

xlabel('x');ylabel('y');

holdon;

gridon;

m=size(data,1);

n=size(data,2);

counter=0;

k=input('请输入聚类数目:

');

ifk>m

disp('输入的聚类数目过大,请输入正确的k值');

k=input('请输入聚类数目:

');

end

M=cell(1,m);

fori=1:

k

M{1,i}=zeros(1,n);

end

Mold=cell(1,m);

fori=1:

k

Mold{1,i}=zeros(1,n);

end

%随机选取k个样本作为初始聚类中心

%第一次聚类,使用初始聚类中心

p=randperm(m);%产生m个不同的随机数

fori=1:

k

M{1,i}=data(p(i),:

);

end

whiletrue

counter=counter+1;

disp('第');

disp(counter);

disp('次迭代');

count=zeros(1,k);

%初始化聚类C

C=cell(1,k);

fori=1:

k

C{1,i}=zeros(m,n);

end

%聚类

fori=1:

m

gap=zeros(1,k);

ford=1:

k

forj=1:

n

gap(d)=gap(d)+(M{1,d}(j)-data(i,j))^2;

end

end

[y,l]=min(sqrt(gap));

count(l)=count(l)+1;

C{1,l}(count(l),:

)=data(i,:

);

end

Mold=M;

disp('聚类中心为:

');

fori=1:

k

disp(M{1,i});

end

disp('聚类结果为:

');

fori=1:

k

disp(C{1,i});

end

sumvar=0;

fori=1:

k

E=0;

disp('单个误差平方和为:

');

forj=1:

count(i)

forh=1:

n

E=E+(M{1,i}(h)-C{1,i}(j,h))^2;

end

end

disp(E);

sumvar=sumvar+E;

end

disp('总体误差平方和为:

');

disp(sumvar);

%计算新的聚类中心,更新M,并保存旧的聚类中心

fori=1:

k

M{1,i}=sum(C{1,i})/count(i);

end

%检查前后两次聚类中心是否变化,若变化则继续迭代;否则算法停止;

tally=0;

fori=1:

k

ifabs(Mold{1,i}-M{1,i})<1e-5*ones(1,n)

tally=tally+1;

continue;

else

break;

end

end

iftally==k

break;

end

end

1.5结果与分析

 

请输入聚类数目:

3

第1次迭代

聚类中心为:

22

74

36

聚类结果为:

00

11

22

00

00

00

00

00

00

00

63

73

74

00

00

00

00

00

00

00

37

36

46

57

00

00

00

00

00

00

单个误差平方和为:

10

单个误差平方和为:

3

单个误差平方和为:

7

总体误差平方和为:

20

第2次迭代

聚类中心为:

11

6.66673.3333

3.75006.5000

聚类结果为:

00

11

22

00

00

00

00

00

00

00

63

73

74

00

00

00

00

00

00

00

37

36

46

57

00

00

00

00

00

00

单个误差平方和为:

4

单个误差平方和为:

1.3333

单个误差平方和为:

3.7500

总体误差平方和为:

9.0833

程序以循环语句来实现算法中迭代的要求。

在对课本上图2.13所示的10个样本进行聚类时,考虑到实际应用中,需试探不同的K值和选择不同的聚类中心起始值,而题中K值已定,所以随机选取了k个样本作为初始聚类中心。

另一方面,这个程序不能生成聚类的结果图。

 

2.1题目

给出感知器算法程序框图,编写算法程序,解习题3-5,。

2.2算法原理

两类线性可分的模式类:

,设判别函数为

其中,

d(X)应具有以下性质:

对样本进行规范化处理,即ω2类样本全部乘以(-1),则有:

下面是感知器的具体步骤:

(1)选择

个分属于

类的模式样本构成训练样本集{

},构成增广向量形式,并进行规范化处理。

任取权向量初始值W

(1),开始迭代。

括号中的1代表迭代次数k=1。

(2)用全部训练样本进行一轮迭代,计算

的值,并修正权向量。

假设进行到第k次迭代时,输入的样本为

,计算

,分两种情况更新权向量:

①若

0,说明分类器对

的分类发生错误,权向量需要校正,且校正为:

,其中,c为校正增量系数,

②若

,表明分类正确,权向量不变,即

可统一写为

(3)分析分类结果:

只要有一个错误分类,回到

(2),直至对所有样本正确分类,结束迭代。

此时的权向量即为算法结果。

2.3程序流程图

 

 

2.4MATLAB程序代码

clearall;

clc;

disp('感知器算法求解两类训练样本的判别函数');

Data1=input('请输入第一类样本数据:

');

Data2=input('请输入第二类样本数据:

');

W=input('请输入权向量初始值W

(1)=');

Expand=cat(1,Data1,Data2);

ExpandData1=cat(2,Data1,ones(4,1));

ExpandData2=cat(2,Data2.*-1,ones(4,1).*-1);

ExpandData=cat(1,ExpandData1,ExpandData2);

X=Expand(:

1);

Y=Expand(:

2);

Z=Expand(:

3);

[ro,co]=size(ExpandData);

Step=0;

CountError=1;

whileCountError>0;

CountError=0;

fori=1:

ro

Temp=W*ExpandData(i,:

)';

ifTemp<=0

W=W+ExpandData(i,:

);

disp(W)

CounterError=CountError+1;

end

end

Step=Step+1;

end

disp(W)

figure

(1)

plot3(X,Y,Z,'ks','LineWidth',2);

gridon;holdon;

xlabel('x');ylabel('y');zlabel('z');

f=@(x,y,z)W

(1)*x+W

(2)*y+W(3)*z+W(4);

[x,y,z]=meshgrid(-1:

.2:

1,-1:

.2:

1,0:

.2:

1);

v=f(x,y,z);

h=patch(isosurface(x,y,z,v));

isonormals(x,y,z,v,h)

set(h,'FaceColor','r','EdgeColor','none');

2.5结果与分析

 

3.5判别界面

个人认为在这道题中需要注意的是对MATLAB绘图的阅读能力,尤其是三维图像,可以用figure窗口的Rotate3D和DataCursor工具进行多角度的观察。

 

3.1题目

编写两类正态分布模式的贝叶斯分类程序,并使用编写的程序求解4.3题。

3.2算法原理

正态分布模式的贝叶斯决策又称为高斯分布。

当特征空间中的某一类样本较多地分布在其均值附近,远离均值点的样本比较少时,用正态分布作为概率模型就是合理的。

最小错误率贝叶斯决策和最小风险贝叶斯决策应用范围很广,但事先必须求出

而当

呈正态分布时,只需要知道均值向量M和协方差矩阵C两个参数即可。

解决两类问题时,

3.3程序流程图

 

3.4MATLAB程序代码

clearall;

clc;

disp('两类正态分布模式的贝叶斯分类');

Sample1=input('样本(类别一)');

Sample2=input('样本(类别二)');

pw1=input('第一类的先验概率');

pw2=input('第二类的先验概率');

u1=mean(Sample1);

u2=mean(Sample2);

sigm1=cov(Sample1);

sigm2=cov(Sample2);

spice=(u1-u2)*(inv(sigm1));

c=-0.5*(u1*inv(sigm1)*u1')+0.5*(u2*inv(sigm1)*u2');

x=-20:

0.5:

40;

y=-20:

0.5:

20;

[X,Y]=meshgrid(x,y);

F1=mvnpdf([X(:

),Y(:

)],u1,sigm1);

F2=mvnpdf([X(:

),Y(:

)],u2,sigm2);

P1=reshape(F1,size(X));

P2=reshape(F2,size(X));

figure

(2)

surf(X,Y,P1)

holdon

surf(X,Y,P2)

shadinginterp

colorbar

title('条件概率密度函数曲线');

figure

(1)

plot(Sample1(:

1),Sample1(:

2),'rx')

holdon

plot(Sample2(:

1),Sample2(:

2),'bx')

numx1=spice(1,1);

numx2=spice(1,2);

p=-1:

1/30:

7;

q=(-c-numx1*p)/numx2;

plot(p,q,'k-')

fori=1:

5

[u,v]=ginput

(1);

plot(u,v,'m*');

P1=pw1*mvnpdf([u,v],u1,sigm1);

P2=pw1*mvnpdf([u,v],u2,sigm2);

disp([u,v]);

holdall

if(P1>P2)

disp('属于第一类');

else

disp('属于第二类');

end;

end

3.5结果与分析

 

程序没有完整的考虑两类问题中的每个情况,只解答了两类样本的协方差矩阵相等,即

的情况。

而且绘制判别函数的语句可读性差。

 

4.1题目

自己选择一幅彩色图像,选择一种分类算法,使用颜色特征对彩色图像中的像素进行分类。

最终输出彩色图像按照颜色的分割结果。

4.4程序代码

clearall;

clc;

file_name=input('输入文件图像路径');

I_rgb=imread(file_name);

figure();

image(I_rgb);

title('原始图像');

whosfile_name;

[m,n,k]=size(file_name);

new=double(reshape(file_name,m*n,k));

whosnew;

startdata=input('背景和前背景初始凝聚点');

idClass=kmeans(new,2,'Start',startdata);

idfile=(idClass==1);

result=reshape([idfile,idfile,idfile],[m,n,k]);

file1=file_name;

file1(resulet)=0;

figure

imshow(file1);

4.5结果与分析

程序运行不成功,需要改进。

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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