- 引言
- 文章目的
- 层次聚类步骤
- 层次聚类Python代码
- 散点图绘制
- 结果分析与可视化
#### 引言
在数据分析中,聚类是一种常用的无监督学习方法,它可以帮助我们发现数据内在的结构。层次聚类(Hierarchical Clustering)是聚类算法中的一种,它不需要预先指定聚类的数量,而是生成一个由层次结构组成的聚类树(称为树状图或Dendrogram)。本文将介绍如何使用Python实现层次聚类,并绘制相应的散点图。
#### 文章目的
本篇文章的目的是向读者展示如何使用Python进行层次聚类分析,并通过散点图直观地展示聚类结果。
#### 层次聚类步骤
1. 数据导入
2. 数据标准化
3. 距离计算与链接方法选择
4. 构建聚类树
5. 确定聚类数
6. 绘制散点图
#### 层次聚类Python代码```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
from sklearn.preprocessing import StandardScaler
# 导入数据
df_raw = pd.read_csv('data.csv')
# 数据标准化
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df_raw)
# 计算距离矩阵
distance_matrix = np.linalg.norm(df_scaled[:, np.newaxis, :] - df_scaled[np.newaxis, :, :], axis=2)
# 选择链接方法并构建聚类树
linkage_matrix = np.linkage(distance_matrix, method='ward')
# 使用聚合聚类确定聚类数
agg_clustering = AgglomerativeClustering(n_clusters=3)
agg_clustering.fit(df_scaled)
# 绘制树状图
from scipy.cluster.hierarchy import dendrogram
plt.figure(figsize=(10, 7))
dendrogram(linkage_matrix, labels=agg_clustering.labels_, leaf_rotation=90., leaf_font_size=8.)
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
plt.show()
# 绘制散点图
plt.figure(figsize=(8, 6))
plt.scatter(df_scaled[:, 0], df_scaled[:, 1], c=agg_clustering.labels_, cmap='viridis', s=50)
plt.title('Hierarchical Clustering Scatter Plot')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.colorbar()
plt.show()
```
#### 散点图绘制
在绘制散点图时,我们使用了从聚合聚类模型中得到的标签来为每个点分配颜色,从而直观地展示不同类别的分布。
#### 结果分析与可视化
通过树状图,我们可以观察到数据点是如何逐步合并成更大的聚类的。散点图则进一步展示了聚类的效果,颜色相同的点属于同一个聚类。