首页
学习
活动
专区
工具
TVP
发布

物以类聚,人以群分——带你认识机器学习中的“聚类”算法

这一篇我们来介绍非监督学习中另一个分支——聚类算法。

聚类算法有很多,我们主要介绍的是很容易理解的k均值(k-means)算法。

聚类,顾名思义,就是给你一些数据,让你把这些数据分成几堆,我们通常把这些堆叫做“簇”。

K-means算法

我们先来简单介绍下K-means算法的原理,它主要包含以下几个步骤:

1.随机抽取几个点作为中心点

2.将每个数据分配到离它最近的中心点

3.将中心点更新为分配后的数据点的平均值

4.重复2、3步,直到中心点的位置不再发生变化

实战

我们还是用之前的癌症数据集来说明算法。

首先,加载数据集

接着,加载我们的k-means模型

然后,用模型去拟合数据

k-means算法会将每一个簇都分配一个编号,我们可以进行查看

可以看出,算法默认将数据分成8个类别,因此编号是从0到7。

但请注意,这些编号其实并没有什么实际的意义。

k-means重要参数

需要设定的参数其实只有1个——n_clusters。该参数会指定你分成的簇的个数。

k-means优缺点

该算法的优点就是可解释性强,原理也很容易理解。但有时运用该算法,并不能找到最合适的中心点。

其他聚类算法

这里我们简要介绍一下其他的聚类算法

1.凝聚算法(agglomerative clustering)

该算法的原理是,每个点都先声明是自己的簇,然后合并最相似的两个簇,直到达到我们所需的簇的个数为止。

2.DBSCAN

DBSCAN是density-based spatial clustering of applications with noise的首字母缩写,可以翻译成“使用噪声且基于密度的空间聚类应用”。

该算法无需提前设置簇的个数,即使遇到较大的数据集也能正确分类,但相应的运行时间可能会长一些。

算法的原理是识别数据中密集的一些空间,该密集区域内的点被称为“核心点”。

那么如何判断一个点是否是核心点呢?

算法提供了2个参数eps和min_samples。给定一个数据点,在离该点eps长的距离内,如果至少有min_samples个样本点,那么就可以将给定的数据点称为“核心点”。

如果在这段距离内的数据点个数小于min_samples,那么这个点被称为噪声。

最后将所有的点分成三类:核心点、噪声和边界点(在eps距离内的样本点)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190907A09F7D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券