sklearn.cluster
模块(聚类算法)
sklearn.cluster
提供了多种 无监督学习聚类算法,用于 数据分组、模式发现、异常检测 等任务,适用于 图像分割、市场分析、异常检测 等应用。
1. sklearn.cluster
主要聚类算法
任务 | 算法 | 适用情况 |
---|
基于中心的聚类 | KMeans | 经典 K 均值聚类,适用于大多数情况 |
基于中心的聚类 | MiniBatchKMeans | KMeans 的小批量版本,适用于大数据 |
基于密度的聚类 | DBSCAN | 基于密度的聚类,适用于噪声数据 |
基于层次的聚类 | AgglomerativeClustering | 层次聚类,适用于层级数据 |
基于图的聚类 | SpectralClustering | 基于图的聚类,适用于非欧几里得数据 |
基于高斯混合 | GaussianMixture | 基于概率的聚类,适用于软聚类 |
基于流形学习 | MeanShift | 基于密度峰值的聚类,适用于不规则簇 |
基于相似度传播 | AffinityPropagation | 自动确定簇数,适用于非规则数据 |
基于模糊 C 均值 | Fuzzy C-Means (FCM) (需 skfuzzy ) | 允许数据点属于多个簇,适用于软聚类 |
2. K 均值聚类 (KMeans
)
(1) 训练 KMeans
聚类模型
from sklearn.cluster import KMeans
import numpy as np
X = np.random.rand(100, 2)
model = KMeans(n_clusters=3, random_state=42)
model.fit(X)
labels = model.predict(X)
print("簇标签:", labels[:10])
解释
n_clusters=3
:指定聚类数目 3
。fit(X)
:训练模型。predict(X)
:预测数据的簇标签。
3. KMeans
主要参数
KMeans(n_clusters=3, init="k-means++", n_init=10, max_iter=300)
参数 | 说明 |
---|
n_clusters | 聚类数(默认 8 ) |
init | 初始化方法(默认 "k-means++" ,可选 "random" ) |
n_init | 重复运行 KMeans 的次数(默认 10 ,取最优结果) |
max_iter | 最大迭代次数(默认 300 ) |
4. DBSCAN 聚类 (DBSCAN
)
(2) 训练 DBSCAN
from sklearn.cluster import DBSCAN
model = DBSCAN(eps=0.3, min_samples=5)
labels = model.fit_predict(X)
print("DBSCAN 簇标签:", labels[:10])
解释
eps=0.3
:定义密度阈值(两点距离 ≤ 0.3
视为邻居)。min_samples=5
:一个簇最少包含 5
个样本。
5. DBSCAN
主要参数
DBSCAN(eps=0.5, min_samples=5, metric="euclidean")
参数 | 说明 |
---|
eps | 邻域半径(默认 0.5 ,值越大,簇越大) |
min_samples | 最小簇样本数(默认 5 ) |
metric | 距离度量(默认 "euclidean" ) |
6. 层次聚类 (AgglomerativeClustering
)
(3) 训练层次聚类
from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering(n_clusters=3)
labels = model.fit_predict(X)
print("层次聚类簇标签:", labels[:10])
解释
7. AgglomerativeClustering
主要参数
AgglomerativeClustering(n_clusters=3, linkage="ward")
参数 | 说明 |
---|
n_clusters | 聚类数(默认 2 ) |
linkage | 连接方式("ward" 、"average" 、"complete" ) |
8. 高斯混合聚类 (GaussianMixture
)
(4) 训练 GaussianMixture
from sklearn.mixture import GaussianMixture
model = GaussianMixture(n_components=3, random_state=42)
model.fit(X)
labels = model.predict(X)
print("高斯混合模型簇标签:", labels[:10])
解释
n_components=3
:高斯分布的数量(类似 KMeans
的 n_clusters
)。
9. GaussianMixture
主要参数
GaussianMixture(n_components=3, covariance_type="full")
参数 | 说明 |
---|
n_components | 聚类数(默认 1 ) |
covariance_type | 协方差类型("full" 、"tied" 、"diag" 、"spherical" ) |
10. KMeans
vs. DBSCAN
vs. AgglomerativeClustering
方法 | 适用情况 | 主要区别 |
---|
KMeans | 数据均匀分布,适用于大规模数据 | 需要预设簇数,易受初始点影响 |
DBSCAN | 适用于噪声数据,簇形状不规则 | 不需预设簇数,依赖 eps 和 min_samples |
AgglomerativeClustering | 适用于层级结构的数据 | 适用于小规模数据,可视化树形结构 |
11. 适用场景
- 图像分割(如 KMeans 图像量化)。
- 市场分析(如 用户群体划分)。
- 异常检测(如 DBSCAN 识别异常点)。
12. 结论
sklearn.cluster
提供了多种聚类方法,KMeans 适用于大规模数据,DBSCAN 适用于噪声数据,AgglomerativeClustering 适用于层次结构数据。