《菜菜的机器学习sklearn课堂》聚类算法Kmeans

在这里插入图片描述

sklearn中的聚类算法


聚类算法在sklearn中有两种表现形式:

  • (和我们之前学过的分类算法以及数据预处理方法一样)

需要实例化,训练并使用接口和属性来调用结果

  • 函数(function)

只需要输入特征矩阵和超参数,即可返回聚类的结果和各种指标

在这里插入图片描述

在这里插入图片描述

注意:该模块中实现的算法可以采用不同类型的矩阵作为输入

  • 所有方法都接受形状[n_samples,n_features]的标准特征矩阵

这些可以从sklearn.feature_extraction模块中的类中获得

  • 对于亲和力传播,光谱聚类和DBSCAN 还可以输入形状[n_samples, n_samples]的相似性矩阵

可以使用sklearn.metrics.pairwise模块中的函数来获取相似性矩阵

KMeans

=========================================================================

KMeans是如何工作的


作为聚类算法的典型代表,KMeans可以说是最简单的聚类算法没有之一,那它是怎么完成聚类的呢?


关键概念:簇与质心

KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类;簇就是聚类的结果表现。

簇中所有数据的均值 μ \mu μ通常被称为这个簇的质心(centroids)。在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。


在KMeans算法中,簇的个数K是一个超参数,需要我们人为输入来确定。KMeans的核心任务就是根据我们设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。具体过程可以总结如下:

| 顺序 | 过程 |

| — | — |

| 1 | 随机抽取K个样本作为最初的质心 |

| 2 | 开始循环: |

| 2.1 | 将每个样本点分配到离他们最近的质心,生成K个簇 |

| 2.2 | 对于每个簇,计算所有被分到该簇的样本点的平均值作为新的质心 |

| 3 | 当质心的位置不再发生变化,迭代停止,聚类完成 |

什么情况下,质心的位置会不再变化呢?

  • 当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。

这个过程在可以由下图来显示,我们规定将数据分为4(K=4),其中白色X代表质心的位置:

在这里插入图片描述

在这里插入图片描述

可以看见,第六次迭代之后,基本上质心的位置就不再改变了,生成的簇也变得稳定。此时我们的聚类就完成了,我们可以明显看出,KMeans按照数据的分布,将数据聚集成了我们规定的4类,接下来我们就可以按照我们的业务需求或者算法需求,对这四类数据进行不同的处理。

簇内误差平方和的定义和解惑


聚类算法聚出的类有什么含义呢?这些类有什么样的性质?

我们认为,被分在同一个簇中的数据是有相似性的,而不同簇中的数据是不同的,当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,从而根据业务需求制定不同的商业或者科技策略。

这个听上去和评分卡案例中讲解的“分箱”概念有些类似,即我们分箱的目的是希望:一个箱内的人有着相似的信用风险,而不同箱的人的信用风险差异巨大,以此来区别不同信用度的人,因此我们追求“组内差异小,组间差异大”。

聚类算法也是同样的目的,我们追求“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值