模式识别大作业

发布 2021-03-07 07:03:28 阅读 8638

iris数据聚类分析。

c均值和模糊c均值。

1.问题描述。

iris数据集包含150个数据,共有3类,每一类有50个数据,其每个数据有四个维度,每个维度代表鸢尾花特征(萼片,花瓣的长度)中的一个,其三类数据名称分别setosa,versicolor,virginica,这些就是 iris数据集的基本特征。现在使用c均值和模糊c均值的方法解决其聚类分析,并且计算比较两种方法得到的分类结果的正确率。

2.算法介绍。

均值算法。c均值算法属于聚类技术中一种基本的划分方法,具有简单、快速的优点。其基本思想是选取c个数据对象作为初始聚类中心,通过迭代把数据对象划分到不同的簇中,使簇内部对象之间的相似度很大,而簇之间对象的相似度很小。

其主要思想:

1)计算数据对象两两之间的距离;

2)找出距离最近的两个数据对象,形成一个数据对象集合a1,并将它们从总的数据集合u中删除;

3)计算a1中每一个数据对象与数据对象集合u中每一个样本的距离,找出在u中与a1中最近的数据对象,将它并入集合a1并从u中删除,直到a1中的数据对象个数到达一定阈值;

4)再从u中找到样本两两间距离最近的两个数据对象构成a2,重复上面的过程,直到形成k个对象集合;

5)最后对k个对象集合分别进行算术平均,形成k个初始聚类中心。

算法步骤:1.初始化:随机选择k个样本点,并将其视为各聚类的初始中心;

2.按照最小距离法则逐个将样本x划分到以聚类中心为代表的k个类中;

3.计算聚类准则函数j,重新计算k个类的聚类中心;

4.重复step2和3知道聚类中心无改变或目标函数j不减小。

2.模糊c-均值。

模糊c均值算法就是,在c均值算法中,把硬分类变为模糊分类。

设是第i个样本属于第j类的隶属度,利用隶属度定义的准则函数为。

其中,b>1是一个可以控制聚类结果的模糊程度的常数。进一步,要求一个样本属于各个聚类的隶属度之和为1,即。

(i=1,2,…,n)

利用拉格朗日乘数法来求解极小值。

令目标函数为。

其中,(i=1,2,…,n)为拉格朗日乘子。分别求l对、和的梯度(或偏导),并置为0,可得必要条件:

(j=1,2,…,c)

(i=1,2,…,n; j=1,2,…,c)

模糊c-均值算法:1:设定聚类数目c、 参数b和一个适当的小数ε>0, 通常取1 3:计算的聚类中心。

4:按下面的方法更新为:

a.计算和, 其中。

(i=1,2,…,n)

b.计算的新隶属度。

如果为空集,计算隶属度;否则,并取。

step5:选取一个适当的矩阵范数,如果,则停止迭代,否则s=s+1,返回step3。当模糊c均值算法收敛时,就得到了各类的聚类中心和各个样本属于各类的隶属度,也就完成了模糊聚类。

3.matlab程序**。

其编写源程序的方法使用matlab程序。

均值**。clear all

第一步:读取数据。

data=load('c:\documents and settings\administrator\')原始数据存放地址。

第二步:随机选出三个初始中心。

a1=round(150*rand(1,3));

while (length(unique(a1))a1=round(150*rand(1,3));

endb=2;%初始常数b的设定。

for i=1:3%随机取出3个样本。

sui_ji(i,:)data(a1(1,i),:

endju_zhen(:,1)=sui_ji;clear sui_ji;

第三步:进行第一次迭代。

k=1;die_dai=1;

for j=1:150

if(j~=a1(1,1)&j~=a1(1,2)&j~=a1(1,3))

d(k,:)data(j,:)

k=k+1;

endend

for j=1:3

for i=1:147

distance(j,i)=norm(ju_zhen(j,:,die_dai)-d(i,:)计算距离矩阵。

endend

for i=1:147%第一次选出分类。

mm(:,i)=sort(distance(:,i));

n(1,i)=find(mm(1,i)==distance(:,i));

endk_1=1;k_2=1;k_3=1;

for i=1:147

if n(1,i)==1

lei_1(k_1,:)d(i,:)

k_1=k_1+1;

endif n(1,i)==2

lei_2(k_2,:)d(i,:)

k_2=k_2+1;

end if n(1,i)==3

lei_3(k_3,:)d(i,:)

k_3=k_3+1;

endend

jun_zhi_1(1,:,die_dai)=mean(lei_1);

jun_zhi_2(1,:,die_dai)=mean(lei_2);

jun_zhi_3(1,:,die_dai)=mean(lei_3);

ju_zhen(:,die_dai)=[jun_zhi_1(1,:,die_dai);jun_zhi_2(1,:

,die_dai);jun_zhi_3(1,:,die_dai)];

第四步:从第二次迭代开始,知道满足要求精度截止。

ju_zhen(:,2)=ju_zhen(:,1);

ju_zhen(:,1)=zeros(size(ju_zhen(:,1)))

die_dai=2;epsnong=0.0001;

while(norm(ju_zhen(:,die_dai)-ju_zhen(:,die_dai-1))>epsnong)%确定精度要求。

%求出距离矩阵。

for j=1:3

for i=1:150

distance(j,i)=norm(ju_zhen(j,:,die_dai)-data(i,:)

endend

%第die_dai次选出分类。

for i=1:150

mm(:,i)=sort(distance(:,i));

n(1,i)=find(mm(1,i)==distance(:,i));

endk_1=1;k_2=1;k_3=1;

for i=1:150

if n(1,i)==1

k_1=k_1+1;

endif n(1,i)==2

k_2=k_2+1;

end if n(1,i)==3

k_3=k_3+1;

endend

%第die_dai次聚类中心。

die_dai=die_dai+1;

jun_zhi_1(1,:,die_dai)=mean(lei_1);

jun_zhi_2(1,:,die_dai)=mean(lei_2);

jun_zhi_3(1,:,die_dai)=mean(lei_3);

ju_zhen(:,die_dai)=[jun_zhi_1(1,:,die_dai);jun_zhi_2(1,:

,die_dai);jun_zhi_3(1,:,die_dai)];

end第五步:定位原先矩阵的分类编号。

k=1; aa=data;

for j=1:length(lei_1(:,1))

for i=1:150

if lei_1(j,:)aa(i,:)

lei_1_num(1,k)=i;%显示第1类的样本编号。

k=k+1;

aa(i,:)zeros(size(aa(i,:)

break;

endend

endlei_1_num=unique(lei_1_num);

模式识别大作业

一。问题重述。利用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线性判别分析的基本思想 通过寻找一个投影方向 线性变换,线性组合 将高维问题降低到一维问题来解...