这一篇我们来介绍非监督学习中另一个分支——聚类算法。
聚类算法有很多,我们主要介绍的是很容易理解的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距离内的样本点)。
领取专属 10元无门槛券
私享最新 技术干货