数学建模暑期集训19:k-means聚类算法

Posted Z|Star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学建模暑期集训19:k-means聚类算法相关的知识,希望对你有一定的参考价值。

k-means聚类算法描述

1、假定我们要对N个样本观测做聚类,要求聚为K类,首先选择K个点作为初始中心点;
2、接下来,按照距离初始中心点最小的原则,把所有观测分到各中心点所在的类中;
3、每类中有若干个观测,计算K个类中所有样本点的均值,作为第二次迭代的K个中心点;
4、然后根据这个中心重复第2、3步,直到收敛(中心点不再改变或达到指定的迭代次数),聚类过程结束。

算法评价:

k-means++算法


spss软件中,默认的聚类算法是K-means++。

k-means算法matlab

spss可以比较方便的求出聚类中心,但无法画出图像,这里是matlab实现k-means算法的代码。

opts = statset('Display','final');
%调用 Kmeans 函数
%X N*P 的数据矩阵
%Idx N*1 的向量,存储的是每个点的聚类标号
%Ctrs K*P 的矩阵,存储的是 K 个聚类质心位置
%SumD 1*K 的和向量,存储的是类间所有点与该类质心点距离之和
%D N*K 的矩阵,存储的是每个点与所有质心的距离;
[Idx,Ctrs,SumD,D] = kmeans(X,4,'Replicates',2,'Options',opts);
%画出聚类为 1 的点。X(Idx==1,1),为第一类的样本的第一个坐标;X(Idx==1,2为第二类的样本的第二个坐标
plot(X(Idx==1,1),X(Idx==1,2),'r.','MarkerSize',14)
hold on
plot(X(Idx==2,1),X(Idx==2,2),'b.','MarkerSize',14)
hold on
plot(X(Idx==3,1),X(Idx==3,2),'g.','MarkerSize',14)
hold on 
plot(X(Idx==4,1),X(Idx==4,2),'y.','MarkerSize',14)
%绘出聚类中心点,kx 表示是圆形
plot(Ctrs(:,1),Ctrs(:,2),'kx','MarkerSize',14,'LineWidth',4)
%legend('Cluster 1','Cluster 2','Cluster3','Centroids','Location','NW')
Ctrs
SumD

注:kmeans函数第二个值代表聚类数量
比如,代码中为4,代表分4类。

以上是关于数学建模暑期集训19:k-means聚类算法的主要内容,如果未能解决你的问题,请参考以下文章

数学建模MATLAB应用实战系列(106)-机器学习算法:K-means聚类(附MATLAB代码)

数学建模暑期集训18:粒子群算法

数学建模暑期集训23:模拟退火算法

数学建模暑期集训26:遗传算法

数学建模暑期集训23:模拟退火算法

数学建模算法学习之K-means聚类算法(建议收藏)