文章目录
听说点进蝈仔帖子的都喜欢点赞加关注~~
鸣谢:
https://mp.weixin.qq.com/s/jtcDiAV_MC1_0GeR-8YVOg
什么是聚类?

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。
另一种说法:
聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。
在数据科学中,我们可以使用聚类分析从我们的数据中获得一些有价值的见解。
什么是聚类算法?
有许多类型的聚类算法。许多算法在特征空间中的示例之间使用相似度或距离度量,以发现密集的观测区域。因此,在使用聚类算法之前,扩展数据通常是良好的实践。
聚类分析的所有目标的核心是被群集的各个对象之间的相似程度(或不同程度)的概念。聚类方法尝试根据提供给对象的相似性定义对对象进行分组。
—源自:《统计学习的要素:数据挖掘、推理和预测》,2016年
一些聚类算法要求您指定或猜测数据中要发现的群集的数量,而另一些算法要求指定观测之间的最小距离,其中示例可以被视为“关闭”或“连接”。因此,聚类分析是一个迭代过程,在该过程中,对所识别的群集的主观评估被反馈回算法配置的改变中,直到达到期望的或适当的结果。scikit-learn 库提供了一套不同的聚类算法供选择。下面列出了10种比较流行的算法:
- 亲和力传播
- 聚合聚类
- BIRCH
- DBSCAN
- K-均值
- Mini-Batch K-均值
- Mean Shift
- OPTICS
- 光谱聚类
- 高斯混合
每个算法都提供了一种不同的方法来应对数据中发现自然组的挑战。没有最好的聚类算法,也没有简单的方法来找到最好的算法为您的数据没有使用控制实验。在本文中,我们将回顾如何使用来自 scikit-learn 库的这10个流行的聚类算法中的每一个。
安装库
pip install scikit-learn
创建一个测试二分类数据集
# 综合分类数据集
from numpy import where
from sklearn.datasets import make_classification
from matplotlib import pyplot
# 定义数据集
X, y = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=4)
# 为每个类的样本创建散点图
for class_value in range(2):
# 获取此类的示例的行索引
row_ix = where(y == class_value)
# 创建这些样本的散布
pyplot.scatter(X[row_ix, 0], X[row_ix, 1])
# 绘制散点图
pyplot.show()
下面正式开始聚类算法
亲和力传播算法AP
AP简介
亲和力传播算法无需指定聚类的结果,使用的是AffinityPropagation,详情请参考:https://www.cnblogs.com/lc1217/p/6908031.html
算法优缺点
AP算法的优点:
不需要制定最终聚类族的个数
族中心点是已有的数据点,并不会额外出现新的数据点
其结果的平方差误差较小。
AP算法的不足:
AP算法的时间复杂度较高,一次迭代大概O(N3)
调参的结果(阻尼系数)对结果影响巨大
from numpy import unique
from sklearn.cluster import AffinityPropagation
import numpy as np
from sklearn.preprocessing import StandardScaler
# 定义数据集
X = np.random.random((500, 4))
X = StandardScaler().fit_transform(X)
# 定义模型
model = AffinityPropagation(damping=0.5) # 设置damping : 阻尼系数,取值[0.5,1)
# 匹配模型
model.fit(X)
yhat = model.predict(X) # yhat为集群结果
clusters = len(unique(yhat)) # 类别
聚合聚类
集聚类的步骤: (Steps of Agglomerative Clustering:)
Initially, all the data-points are a cluster of its own.
最初,所有数据点都是其自身的集群。
Take two nearest clusters and join them to form one single cluster.
选取两个最近的群集,并将它们合并为一个群集。
Proceed recursively step 2 until you obtain the desired number of clusters.
递归地执行步骤2,直到获得所需的群集数量。
# 聚合聚类
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import AgglomerativeClustering
from matplotlib import pyplot
# 定义数据集
X, _ = make_classification(n_samples=1000, n_features=2,

本文详细介绍了多种机器学习聚类算法,包括亲和力传播、聚合聚类、BIRCH、DBSCAN、K-均值、Mini-Batch K-均值、均值漂移、OPTICS、光谱聚类和高斯混合模型。每种算法的特点、优缺点以及在数据科学中的应用进行了阐述,并提供了使用Python的scikit-learn库实现这些算法的代码示例。通过对这些算法的理解和比较,有助于在实际数据分析中选择合适的聚类方法。


被折叠的 条评论
为什么被折叠?



