【scikit-learn】sklearn.cluster 模块 :聚类算法

sklearn.cluster 模块(聚类算法)

sklearn.cluster 提供了多种 无监督学习聚类算法,用于 数据分组、模式发现、异常检测 等任务,适用于 图像分割、市场分析、异常检测 等应用。


1. sklearn.cluster 主要聚类算法

任务算法适用情况
基于中心的聚类KMeans经典 K 均值聚类,适用于大多数情况
基于中心的聚类MiniBatchKMeansKMeans 的小批量版本,适用于大数据
基于密度的聚类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)  # 100 个二维点

# 训练 KMeans 聚类模型
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])

解释

  • n_clusters=3:指定聚类数 3

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:高斯分布的数量(类似 KMeansn_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适用于噪声数据,簇形状不规则不需预设簇数,依赖 epsmin_samples
AgglomerativeClustering适用于层级结构的数据适用于小规模数据,可视化树形结构

11. 适用场景

  • 图像分割(如 KMeans 图像量化)。
  • 市场分析(如 用户群体划分)。
  • 异常检测(如 DBSCAN 识别异常点)。

12. 结论

  • sklearn.cluster 提供了多种聚类方法,KMeans 适用于大规模数据,DBSCAN 适用于噪声数据,AgglomerativeClustering 适用于层次结构数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值