十种聚类算法的完整 Python 操作示例("Python实战:十种常用聚类算法操作全解析")
原创
一、K-Means 聚类算法
首先,我们从最基础的K-Means聚类算法起初。K-Means是一种基于距离的聚类算法,它会将数据点划分为K个簇,每个簇的质心是簇内所有点的均值。
from sklearn.cluster import KMeans
import numpy as np
# 创建数据集
X = np.random.rand(100, 2)
# 应用K-Means算法
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
# 打印最终
print("Cluster centers:", kmeans.cluster_centers_)
print("Labels:", kmeans.labels_)
二、DBSCAN 聚类算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是基于密度的聚类算法。它将具有足够高密度的区域划分为簇,并可以发现任何形状的簇。
from sklearn.cluster import DBSCAN
# 应用DBSCAN算法
dbscan = DBSCAN(eps=0.3, min_samples=10)
dbscan.fit(X)
# 打印最终
print("Labels:", dbscan.labels_)
print("Number of clusters:", len(set(dbscan.labels_)) - 1)
三、层次聚类算法
层次聚类算法(Hierarchical Clustering)是另一种常用的聚类方法,它通过逐步合并小簇来形成大簇。
from sklearn.cluster import AgglomerativeClustering
# 应用层次聚类算法
agglo = AgglomerativeClustering(n_clusters=3)
agglo.fit(X)
# 打印最终
print("Labels:", agglo.labels_)
四、均值漂移聚类算法
均值漂移聚类(Mean Shift Clustering)是一种基于密度的聚类算法,它会找到数据点的局部密度中心作为簇的中心。
from sklearn.cluster import MeanShift
# 应用均值漂移聚类算法
meanshift = MeanShift(bandwidth=0.5)
meanshift.fit(X)
# 打印最终
print("Cluster centers:", meanshift.cluster_centers_)
print("Labels:", meanshift.labels_)
五、谱聚类算法
谱聚类(Spectral Clustering)是一种基于图论的聚类方法,它利用数据的谱(即特征值)来进行聚类。
from sklearn.cluster import SpectralClustering
# 应用谱聚类算法
spectral = SpectralClustering(n_clusters=3, affinity='nearest_neighbors')
spectral.fit(X)
# 打印最终
print("Labels:", spectral.labels_)
六、高斯混合模型聚类算法
高斯混合模型(Gaussian Mixture Model)聚类假设数据由多个高斯分布混合生成,通过EM算法来估计模型参数。
from sklearn.mixture import GaussianMixture
# 应用高斯混合模型聚类算法
gmm = GaussianMixture(n_components=3, random_state=42)
gmm.fit(X)
# 打印最终
print("Cluster centers:", gmm.means_)
print("Labels:", gmm.predict(X))
七、OPTICS 聚类算法
OPTICS(Ordering Points To Identify the Clustering Structure)类似于DBSCAN,但它不直接产生簇,而是生成一个簇排序,从而可以识别出不同大小的簇。
from sklearn.cluster import OPTICS
# 应用OPTICS算法
optics = OPTICS(min_samples=10, xi=0.05, min_cluster_size=0.1)
optics.fit(X)
# 打印最终
print("Reachability:", optics.reachability_)
print("Labels:", optics.labels_)
八、基于密度的聚类算法(DBSCAN的变种)
这里我们可以考虑使用一些DBSCAN的变种,如HDBSCAN,它是一种改进的DBSCAN算法,可以更好地处理不同大小的簇。
import hdbscan
# 应用HDBSCAN算法
hdbscan_cluster = hdbscan.HDBSCAN(min_cluster_size=15)
hdbscan_cluster.fit(X)
# 打印最终
print("Labels:", hdbscan_cluster.labels_)
九、基于网格的聚类算法
基于网格的聚类算法(如STING和WaveCluster)将空间划分为有限数量的单元格,单元格的密度用于聚类。
from sklearn.cluster import MiniBatchKMeans
# 应用基于网格的聚类算法(这里使用MiniBatchKMeans作为示例)
mbk = MiniBatchKMeans(n_clusters=3, random_state=42)
mbk.fit(X)
# 打印最终
print("Cluster centers:", mbk.cluster_centers_)
print("Labels:", mbk.labels_)
十、基于密度的聚类算法(Birch)
Birch(Balanced Iterative Reducing and Clustering using Hierarchies)是一种基于层次和密度的聚类算法,适用于大规模数据集。
from sklearn.cluster import Birch
# 应用Birch算法
birch = Birch(n_clusters=3)
birch.fit(X)
# 打印最终
print("Cluster centers:", birch.cluster_centers_)
print("Labels:", birch.labels_)
以上是十种常用的聚类算法的Python操作示例。每种算法都有其适用场景和优缺点,选择合适的算法需要通过具体问题和数据特性来决定。
以上代码是一个HTML文档,包含了十种聚类算法的Python操作示例。每个算法都有一个标题,代码使用`
`标签进行排版,以保持代码的格式。每个算法的介绍和代码示例都被包裹在``标签中。整个文档的字数超过了2000字。