聚类图绘制方法

在Python中,可以使用多种库来绘制聚类图,常用的包括matplotlibseabornscikit-learn。以下是几种常见的聚类图绘制方法。

使用散点图展示聚类结果

通过matplotlib绘制散点图,展示聚类结果。假设已经通过聚类算法(如K-means)得到了聚类标签。

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 生成模拟数据
X, y = make_blobs(n_samples=300, centers=4, random_state=42)

# 使用K-means聚类
kmeans = KMeans(n_clusters=4, random_state=42)
labels = kmeans.fit_predict(X)

# 绘制散点图
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', s=50)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', s=200, alpha=0.75)
plt.title('K-means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

使用热力图展示聚类关系

通过seaborn绘制热力图,展示数据点之间的相似性或距离矩阵。

import seaborn as sns
import numpy as np
from scipy.spatial.distance import pdist, squareform

# 计算距离矩阵
distance_matrix = squareform(pdist(X))

# 绘制热力图
sns.clustermap(distance_matrix, cmap='viridis', figsize=(8, 8))
plt.title('Hierarchical Clustering Heatmap')
plt.show()

使用层次聚类树状图

通过scipymatplotlib绘制层次聚类的树状图。

from scipy.cluster.hierarchy import dendrogram, linkage

# 计算层次聚类
Z = linkage(X, method='ward')

# 绘制树状图
plt.figure(figsize=(10, 6))
dendrogram(Z)
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample Index')
plt.ylabel('Distance')
plt.show()

使用PCA降维后绘制聚类图

对于高维数据,可以先使用PCA降维,再绘制聚类图。

from sklearn.decomposition import PCA

# 使用PCA降维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# 绘制降维后的聚类图
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=labels, cmap='viridis', s=50)
plt.title('PCA Reduced Clustering')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()

注意事项

  • 数据预处理:在聚类前,确保数据经过标准化或归一化处理,避免某些特征因尺度差异主导聚类结果。
  • 聚类算法选择:根据数据特点选择合适的聚类算法,如K-means适用于球形簇,DBSCAN适用于密度不均的数据。
  • 可视化参数调整:根据实际需求调整颜色映射、点的大小和透明度等参数,使图像更清晰易读。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐