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()

输出

上述代码产生以下结果 −

scipy_ward_method_one

示例 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()

输出

上述代码产生以下结果 −

scipy_ward_method_two

scipy_reference.html