33天搞定机器学习:人以群分,物以类聚,最简单的聚类算法
作者头像
  • 2020-05-13 07:31:12 2

序言

大家好,我是Python数据分析师,希望通过我的经验分享,帮助大家更好地理解和掌握机器学习的知识。今天,我要和大家分享的是我的人工智能系列课程《33天搞定机器学习》中的第20篇文章,我们将探讨一种基础且实用的聚类算法——K-Means。这篇文章难度较低,大家可以放心阅读。

算法原理

有时候我们会遇到未分类的数据集,无法直接看出其中的规律。这时就需要借助聚类算法,将相似的数据归为一类。K-Means是一种简单的聚类算法,可以用八个字概括:“人以群分,物以类聚”。

K-Means是一种无监督的学习方法,其核心思想是将样本集中的样本根据距离划分为k个簇,使得簇内的样本尽可能靠近,而簇之间的距离尽可能远。相似度或距离是聚类的关键,选择合适的距离度量方法将直接影响聚类的效果。常用的度量方法包括欧氏距离、闵可夫斯基距离、曼哈顿距离、切比雪夫距离、相关系数和夹角余弦等。

K-Means的计算过程如下:

  1. 随机选取k个初始中心点(质心)
  2. 将每个数据分配到最近的中心点所在的簇
  3. 计算每个簇的新中心点,即该簇内所有数据的平均值
  4. 重复步骤2和3,直到中心点不再变化(达到收敛状态)或达到最大迭代次数

看不懂的同学可以参考下图,对照步骤加深理解。

K-Means的优点

  1. 简单且快速
  2. 对大数据集具有较高的效率和可扩展性
  3. 时间复杂度接近线性,适合处理大规模数据集

K-Means的缺点

  1. K-Means是一种局部最优算法,对初始质心的选择非常敏感
  2. 选择合适的K值较为困难

Sklearn库中的K-Means参数详解及应用

Python的Sklearn库提供了K-Means聚类算法的实现方法,可以直接调用。以下是KMeans类的主要参数:

  • n_clusters:即K值,通常需要尝试多个值以找到最佳效果,默认值为8。
  • max_iter:最大迭代次数,默认值为300。对于凸数据集,一般不需要调整此值;对于非凸数据集,可能需要指定最大迭代次数。
  • n_init:运行算法的次数,以选择最佳聚类效果,默认值为10。若K值较大,可以适当增加此值。
  • init:初始质心的选择方式,默认值为“k-means++”,建议使用默认值。
  • algorithm:选择算法模式,默认值为“auto”。对于稠密数据集,通常选择“elkan”;对于稀疏数据集,选择“full”。

KMeans类的主要属性包括: - clustercenters:每个簇中心的坐标,形状为[nclusters, nfeatures] - labels:每个数据的分类标签,从0开始 - inertia:每个数据点到其所属簇中心的距离之和,用于评估簇的数量是否合适

K-Means的应用

使用K-Means非常简单,无需刻意构造示例,Sklearn官网提供的几个例子已经足够让大家掌握。对K-Means不熟悉的同学可以通过私信联系我,获取专栏每章的代码和数据集。

欢迎订阅

这个专栏凝聚了我大量的心血,很高兴看到很多同学给予了支持和五星好评。如果你对数据分析或机器学习感兴趣,欢迎订阅我的专栏,一起学习进步!

    本文来源:图灵汇
责任编辑: :
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
人以群分物以类聚算法搞定机器简单学习
    下一篇