k-means算法:
第一步:选K个初始聚类中心,z1(1),z2(1),⋯,zk(1),其中括号内的序号为寻找聚类中心的迭代运算的次序号.
聚类中心的向量值可任意设定,例如可选开始的K个模式样本的向量值作为初始聚类中心。
第二步:逐个将需分类的模式样本{x}按最小距离准则分配给K个聚类中心中的某一个zj(1)。假设i=j时,
Dj(k)=min{∥x−zi(k)∥,i=1,2,⋯K}
则x∈Sj(k),其中k为迭代运算的次序号,第一次迭代k=1,Sj表示第j个聚类,其聚类中心为zj。
第三步:计算各个聚类中心的新的向量值,zj(k+1),j=1,2,⋯,K,求各聚类域中所包含样本的均值向量:
zj(k+1)=1Nj∑x∈Sj(k)x,j=1,2,⋯,K,
其中Nj为第j个聚类域Sj中所包含的样本个数。以均值向量作为新的聚类中心,可使如下聚类准则函数最小:
Jj=∑x∈Sj(k)∥∥x−zj(k+1)∥∥2,j=1,2,⋯,K
在这一步中要分别计算K个聚类中的样本均值向量,所以称之为K-均值算法。
第四步:若zj(k+1)≠zj(k),j=1,2,⋯,K,则返回第二步,将模式样本逐个重新分类,重复迭代运算; 若zj(k+1)=zj(k),j=1,2,⋯,k,则算法收敛,计算结束。
K-均值分类算法实例

第一步:取K=2,并选
z1(1)=x1=(00)T,z2(1)=x2=(10)T
第二步:因||x1−z1(1)||<||x1−z2(1)||,故x1∈S1(1)
因||x2−z1(1)||>||x2−z2(1)||,故x2∈S2(1)
因||x3−z1(1)||<||x3−z2(1)||,故x3∈S1(1)
……
得到:
S1(1)={x1, x3}, S2(1)={x2, x4, x5, …, x20}
第三步:计算新的聚类中心


第四步:因zj(2)≠zj(1),j=1,2,返回第二步;
第二步(返回1):由新的聚类中心,得到:


因此
S1(2)={x1,x2,⋯,x8}
S2(2)={x9,x10,⋯,x20}
第三步(返回1):计算聚类中心
第四步(返回1):因zj(3)≠zj(2),j=1,2,返回第二步;
第二步(返回2):分类结果与前一次迭代的结果相同,即S1(4)=S1(3),S2(4)=S2(3);
第三步(返回2):聚类中心与前一次迭代的结果相同;
第四步(返回2):因zj(4)=zj(3),j=1,2,算法收敛,得到最终的聚类中心。
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧