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

# Sample data
data = np.array([[10, 20], [30, 40], [50, 60], [70, 80]])

# the distance matrix
distance_matrix = pdist(data)

# hierarchical clustering using ward() method
res = ward(distance_matrix)

# Plot the dendrogram
plt.figure()
dendrogram(res)
plt.show()

输出

以上代码产生以下结果:

scipy_ward_method_one

示例 2

在此示例中,我们使用鸢尾花数据集来操作使用 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

# Load Iris dataset
iris = load_iris()
data = iris.data

# the distance matrix
distance_matrix = pdist(data)

# calculate the hierarchical clustering using ward() method
res = ward(distance_matrix)

# plot the dendrogram
plt.figure(figsize=(6, 4))
dendrogram(res)
plt.show()

输出

以上代码产生以下结果:

scipy_ward_method_two
scipy_reference.htm
广告