K-means 在 Python 中的实现

K-means算法简介

K-means是机器学习中一个比较常用的算法,属于无监督学习算法,其常被用于数据的聚类,只需为它指定簇的数量即可自动将数据聚合到多类中,相同簇中的数据相似度较高,不同簇中数据相似度较低。

K-menas的优缺点:

优点:

  • 原理简单
  • 速度快
  • 对大数据集有比较好的伸缩性

缺点:

  • 需要指定聚类 数量K
  • 对异常值敏感
  • 对初始值敏感

K-means的聚类过程

其聚类过程类似于梯度下降算法,建立代价函数并通过迭代使得代价函数值越来越小

  1. 适当选择c个类的初始中心;
  2. 在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
  3. 利用均值等方法更新该类的中心值;
  4. 对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。

201104061601534923该算法的最大优势在于简洁和快速。算法的关键在于初始中心的选择和距离公式。

K-means 实例展示

python中km的一些参数:

下面展示一个代码例子

为了更直观的描述,这次在图上做一个展示,由于图像上绘制二维比较直观,所以数据调整到了二维,选取100个点绘制,聚类类别为3类

201708253474_6662

可以看到聚类效果还是不错的,对k-means的聚类效率进行了一个测试,将维度扩宽到50维

数据规模 消耗时间 数据维度
10000条 4s 50维
100000条 30s 50维
1000000条 4’13s 50维

对于百万级的数据,拟合时间还是能够接受的,可见效率还是不错,对模型的保存与其它的机器学习算法模型保存类似

1 3 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部