数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)

大数据 算法
k-means算法比较简单。在k-means算法中,用cluster来表示簇;容易证明k-means算法收敛等同于所有质心不再发生变化。本文为您带来基本的k-means算法流程

k-means算法比较简单。在k-means算法中,用cluster来表示簇;容易证明k-means算法收敛等同于所有质心不再发生变化。基本的k-means算法流程如下:

简介

又叫K-均值算法,是非监督学习中的聚类算法。

数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)

基本思想

k-means算法比较简单。在k-means算法中,用cluster来表示簇;容易证明k-means算法收敛等同于所有质心不再发生变化。基本的k-means算法流程如下:

选取k个初始质心(作为初始cluster,每个初始cluster只包含一个点);

repeat:

  • 对每个样本点,计算得到距其最近的质心,将其类别标为该质心所对应的cluster;
  • 重新计算k个cluster对应的质心(质心是cluster中样本点的均值);
  • until 质心不再发生变化 12345

repeat的次数决定了算法的迭代次数。实际上,k-means的本质是最小化目标函数,目标函数为每个点到其簇质心的距离的平方和:

 

  • N是元素个数,x表示元素,c(j)表示第j簇的质心
  • 算法复杂度
  • 时间复杂度是O(nkt) ,其中n代表元素个数,t代表算法迭代的次数,k代表簇的数目

优缺点

  • 优点
  • 简单、快速;
  • 对大数据集有较高的效率并且是可伸缩性的;
  • 时间复杂度近于线性,适合挖掘大规模数据集。

缺点

  • k-means是局部***,因而对初始质心的选取敏感;
  • 选择能达到目标函数***的k值是非常困难的。

代码

代码已在github上实现,这里也贴出来

 

测试数据集获取地址为testSet

责任编辑:未丽燕 来源: 网络大数据
相关推荐

2018-05-03 09:36:53

算法数据挖掘C4.5

2018-10-27 15:47:35

CART算法决策树

2016-01-29 11:00:55

数据挖掘算法大数据

2018-09-13 12:51:58

数据挖掘算法朴素贝叶斯

2013-02-25 09:46:35

数据挖掘算法ICDM

2011-01-26 09:14:43

数据挖掘

2012-08-09 09:57:54

K-means

2018-11-14 09:40:05

排序算法Java编程语言

2021-10-31 07:38:37

排序算法代码

2019-08-28 11:08:51

排序算法Java

2017-07-18 10:50:38

前端JavaScript排序算法

2022-03-10 12:03:33

Python算法代码

2021-11-08 15:12:48

排序算法面试

2024-04-18 15:44:20

2010-08-31 14:01:48

CSS

2017-07-27 14:21:44

2018-02-01 18:45:12

机器学习算法线性回归

2021-01-26 05:33:07

排序算法快速

2011-03-10 10:45:05

算法

2011-05-17 13:39:01

算法
点赞
收藏

51CTO技术栈公众号