SciPy - ward() 方法
SciPy ward() 方法是聚集聚类的一部分,可最小化其控制范围内的总聚类方差。当您需要了解数据结构并检测自然分组时,该方法尤其有用。可以使用可视化数据的树状图来执行此分组。
此方法根据相似的聚类点来降低数据维度。
语法
以下是 SciPy ward() 方法的语法 −
ward(distance_matrix)
参数
此方法仅接受单个参数 −
- distance_matrix:此参数适用于内置方法 pdist(),该方法根据给定的数据数组计算操作。
返回值
此方法返回显示层次聚类的链接矩阵 (res)。
示例 1
以下是 SciPy ward() 方法在小数据集上执行层次聚类任务,并使用树状图显示可视化效果。
import numpy as np from scipy.cluster.hierarchy import ward, dendrogram import matplotlib.pyplot as plt from scipy.spatial.distance import pdist # 样本数据 data = np.array([[10, 20], [30, 40], [50, 60], [70, 80]]) # 距离矩阵 distance_matrix = pdist(data) # 使用 ward() 方法进行层次聚类 res = ward(distance_matrix) # 绘制树状图 plt.figure() dendrogram(res) plt.show()
输出
上述代码产生以下结果 −

示例 2
在此示例中,我们使用 Iris 数据集通过 ward() 和 dendrogram() 执行层次聚类任务。
import numpy as np from scipy.cluster.hierarchy import ward, dendrogram import matplotlib.pyplot as plt from scipy.spatial.distance import pdist from sklearn.datasets import load_iris # 加载 Iris 数据集 iris = load_iris() data = iris.data # 距离矩阵 distance_matrix = pdist(data) # 使用 ward() 方法计算层次聚类 res = ward(distance_matrix) # 绘制树状图 plt.figure(figsize=(6, 4)) dendrogram(res) plt.show()
输出
上述代码产生以下结果 −
