模式识别实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模式识别与智能信息处理实践
实验一聚类分析
一、实验目的
通过聚类分析实验,加深对聚类分析基本思想、方法的理解和掌握。
二、实验内容
了解动态、静态聚类算法的特点;
熟练掌握k-均值算法或层次聚类算法;
编写能对实际模式样本正确分类的算法程序。
掌握动态聚类算法的基本思想;
认识类别数、初始类心的选择对k-均值算法聚类结果的影响;
编写能对实际模式样本正确分类的k-均值算法程序。
三、方法手段
设类别数为k,选取k个初始聚类中心,按最小距离原则将各模式分配到k类中的某一类,
不断地计算类心和调整各模式的类别使每个模式特征矢量到其所属类别中心的距离平方之和
最小。
四、k-均值算法
(1)从D中随机取k个元素,作为k个簇的各自的中心。
(2)分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。(3)根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。
(4)将D中全部元素按照新的中心重新聚类。
(5)重复第4步,直到聚类结果不再变化。
五、k-均值程序运行结果
(1)改变初始类心,观察对聚类结果的影响
若选初始类心是[1 2 3]时的结果为其分为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}。
若选初始类心是[2 4 5]时其聚类结果为其分为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且选初始类心是[1 2 3]时,其最终各类中心的距离为[1.1657 0.8230 4.0783],若k=4且选初始类心是[1 2 3 4]时,其最终各类中心的距离为[1.3049 0.4917 4.0783 1.3928],可见,改变类别数k,其对类内距离平方和的大小有直接的影响,且k
越大,其类内距离平方和距离越小。
六、实验总结
影响k-均值算法结果的因素有:初始类心的选择以及k值的选择,且k-均值算法适用于k
值已知的情况,即类别号已知的情况。
七、Kmeans程序
function y=my_Kmeans(k,mid)
k=3;%类数
mid=[1 2 3]; %随便给三个聚类中心
%从文本文件读入数据放入X中
load fisheriris;X=meas;k=3;mid=[1 2 3]; %Iris测试数据集
num=size(X,1);%获得X维数大小
for i=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
for j=1:num
for t=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
for i=1:k
Z(i,:)=mean(value{i});%计算k类样本的均值,更新聚类中心
end
end
celldisp(class);%显示Kmeans聚类结果
D %显示最终类间距离