k均值算法及其优缺点

她呀 2019-04-23 11:17:36
算法: 第一步:选K个初始聚类中心,z1(1), z2(1), .. zK(1), 其中括号内的序号为寻找聚类中心的迭代运算的次序号。聚类中心的向量值可任意设定,例如可选开始的K个模式样本的向量值作为初始聚类中心。 第二步:逐个将需分类的模式样本{x}按最小距离准则分配给K个聚类中心中的某一个zj(1)。 假设i=j时,,则,其中k为迭代运算的次序号,第一次迭代k=1, Sj表示第j个聚类,其聚类中心为zj。 第三步:计算各个聚类中心的新的向量值, zj(k+1), j1,...K. . 求各聚类域中所包含样本的均值向量: 其中Nj为第j个聚类域Sj中所包含的样本个数。以均值向量作为新的聚类中心,可使如下聚类准则函数最小: 在这一步中要分别计算K个聚类中的样本均值向量,所以称之为K-均值算法。 第四步:若,j=1,..,K,则返回第二步,将模式样本逐个重新分类,重复迭代运算;若,j=1,2...K, 则算法收敛,计算结束。 K-Means的主要优点: 1) 原理简单,容易实现 2)可解释度较强 K-Means的主要缺点: 1) K值很难确定 2)局部最优 3)对噪音和异常点敏感 4)需样本存在均值(限定数据种类) 5)聚类效果依赖于聚类中心的初始化 6)对于非凸数据集或类别规模差异太大的数据效果不好
...全文
1800 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主在给大家讲算法吗?
K均值聚类算法是一种广泛使用的聚类方法,能够将相似的数据对象划分到同一簇中。以下是一个完整的K均值聚类算法的MATLAB程序实现,并附有详细注释,方便读者理解算法的运行过程。 程序首先定义了一个包含20个数据点的数据集x,每个数据点具有两个特征。接着,通过调用figure函数创建了一个图形窗口,并利用plot函数将这些数据点绘制出来,其中红色星号表示数据点的位置。随后,程序选取了两个初始聚类中心Z1和Z2,分别代表两个簇的中心位置。接下来,程序进入while循环,迭代地计算每个数据点到这两个聚类中心的距离,并根据距离将数据点分配到距离更近的簇中。同时,程序记录了每个簇的成员,并重新计算每个簇的中心点。在每次迭代中,使用mean函数计算每个簇的新中心点,并将其与上一次的中心点进行比较。如果两次中心点的差异小于设定的阈值eps,则认为算法已经收敛,否则继续进行迭代。当算法收敛后,程序再次使用hold on函数和plot函数将最终的聚类中心和数据点绘制出来,其中绿色加号表示聚类中心的位置。 该MATLAB程序完整地实现了K均值聚类算法的各个步骤,包括数据预处理、初始聚类中心的选择、数据点的分配以及中心点的更新等,可以作为学习和研究K均值聚类算法的参考范例。 K均值聚类算法具有以下优点:首先,算法的实现过程简单易懂,容易理解和编程实现;其次,它能够处理高维数据,适用于多种数据类型;此外,它可以在一定程度上自动确定簇的数量。然而,该算法也存在一些不足之处:一是对初始聚类中心的选择较为敏感,不同的初始中心可能导致不同的聚类结果;二是算法有可能收敛到局部最优解,而不是全局最优解;三是对噪声和离群点较为敏感,这些数据点可能会影响聚类结果的准确性。尽管存在这些缺点,但K均值聚类算法仍然是聚类分析中一种非常实用的方法。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧