模式识别作业三
作业3 用K-means进行聚类实验题目说明基于VOCVOCVOC数据集中600600600张图像的边界框标注,利用聚类算法获得对该数据集上的锚框。为简化数据,每个边界框只给出长和宽,因此只需要在二维空间进行聚类分析。请使用K-means算法实现聚类。0x01 实验内容使用K-means进行聚类实验:假设K=3,分别在不同(大于两次)初始聚类中心情况下进行聚类,观察聚类收敛后聚类中心的情况。聚类结
作业3 用K-means进行聚类实验
题目说明
基于 V O C VOC VOC数据集中 600 600 600张图像的边界框标注,利用聚类算法获得对该数据集上的锚框。为简化数据,每个边界框只给出长和宽,因此只需要在二维空间进行聚类分析。请使用K-means算法实现聚类。
0x01 实验内容
- 使用K-means进行聚类实验:
假设K=3,分别在不同(大于两次)初始聚类中心情况下进行聚类,观察聚类收敛后聚类中心的情况。 - 聚类结果可视化:
对上述聚类结果进行可视化。(二维平面用不同颜色表示不同簇)
0x02 K-means算法
K-means算法是最简单的一种聚类算法。算法的目的是使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准)
0x03 K-means聚类算法的一般步骤:
初始化。输入基因表达矩阵作为对象集X,输入指定聚类类数N,并在X中随机选取N个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。
进行迭代。根据相似度准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。
更新聚类中心。然后以每一类的平均向量作为新的聚类中心,重新分配数据对象。
反复执行第二步和第三步直至满足中止条件。
0x04 实验过程:
本实验主要采用了MATLAB语言来实现。
- 选取K=2时:
- 选取K=3时:
3. 选取K=4时:
4. 选取K=5时:
结论:各个聚类中心的位置随着K值的改变而改变,当数据被分成几簇后,
每个点的坐标位置并不会改变。
0x05 code:
%K=5时:
clc;
clear;
X=readmatrix('classes.txt');
[idx,C] = kmeans(X,5)
figure;
plot(X(:,1),X(:,2),'.');
title 'Randomly Generated Data';
figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
hold on
plot(X(idx==3,1),X(idx==3,2),'y.','MarkerSize',12)
hold on
plot(X(idx==4,1),X(idx==4,2),'g.','MarkerSize',12)
hold on
plot(X(idx==5,1),X(idx==5,2),'c.','MarkerSize',12)
plot(C(:,1),C(:,2),'kx',...
'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4','Cluster 5','Centroids',...
'Location','NW')
title 'Cluster Assignments and Centroids'
hold off
更多推荐
所有评论(0)