- SciPy 教程
- SciPy - 首页
- SciPy - 简介
- SciPy - 环境设置
- SciPy - 基本功能
- SciPy - 聚类
- SciPy - 常量
- SciPy - FFTpack
- SciPy - 积分
- SciPy - 插值
- SciPy - 输入和输出
- SciPy - 线性代数 (Linalg)
- SciPy - 图像处理 (Ndimage)
- SciPy - 优化
- SciPy - 统计
- SciPy - 压缩稀疏图 (CSGraph)
- SciPy - 空间
- SciPy - 正交距离回归 (ODR)
- SciPy - 特殊函数包
- SciPy 有用资源
- SciPy - 参考
- SciPy - 快速指南
- SciPy - 有用资源
- SciPy - 讨论
SciPy - linkage() 方法
SciPy 的 linkage() 方法用于层次聚类,可用于生成连接矩阵。该矩阵提供了矩阵数据的代码结构。
层次聚类通过将数据分成基于组的方式来定义。以下是数据分析中的两种用途:
- 识别自然分组:它用于借助自然划分来识别分组项。
- 构建树状图:这会创建一个树状图,这是一种树形图,记录数据的分割序列或层次结构。
此方法通常用于数据分析,将相似的项目分组到集群中,这可以帮助我们理解数据的结构并进行预测。
语法
以下是 SciPy linkage() 方法的语法:
linkage(data, method = 'single') or, linkage(data, method = 'single', metric = 'type')
参数
此方法接受以下参数:
- data:此参数定义数组形式的数据元素列表。
- method = 'single':此参数定义链接算法的类型。
- metric = 'type':默认类型为“欧几里得”。
返回值
此方法返回连接矩阵,其形状为 numpy 数组 (n-1, 4),其中 n 定义观察次数。
示例 1
以下是 SciPy linkage() 方法对自定义数据集进行链接聚类,并绘制树状图以可视化数据聚类过程。
import numpy as np from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt # Sample data data = np.array([[1, 2], [2, 3], [5, 8], [8, 8]]) # Compute the linkage matrix using single linkage result = linkage(data, method='single') # Plot the dendrogram plt.figure(figsize=(8, 4)) dendrogram(result) plt.title('Dendrogram - Single Linkage') plt.xlabel('Sample index') plt.ylabel('Distance') plt.show()
输出
以上代码产生以下结果:
示例 2
在这里,我们演示了对具有六个观测值的数据集进行完全链接聚类,并使用欧几里得距离度量绘制树状图。
import numpy as np from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt # Sample data data = np.array([[1, 2], [2, 3], [5, 8], [8, 8], [1, 0], [2, 1]]) # Compute the linkage matrix using complete linkage and Euclidean distance result = linkage(data, method='complete', metric='euclidean') # Plot the dendrogram plt.figure(figsize=(8, 4)) dendrogram(result) plt.title('Dendrogram - Complete Linkage') plt.xlabel('Sample index') plt.ylabel('Distance') plt.show()
输出
以上代码产生以下结果:
示例 3
下面的示例使用曼哈顿距离对与示例 2 相同的数据集执行平均链接聚类。这里,它使用度量类型为“cityblock”。
请注意,曼哈顿距离是使用直角的两个点轴测量的。它用于高维数据集。
import numpy as np from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt # Sample data data = np.array([[1, 2], [2, 3], [5, 8], [8, 8], [1, 0], [2, 1]]) # Compute the linkage matrix using average linkage and Manhattan distance result = linkage(data, method='average', metric='cityblock') # Plot the dendrogram plt.figure(figsize=(8, 4)) dendrogram(result) plt.title('Dendrogram - Average Linkage with Manhattan Distance') plt.xlabel('Sample index') plt.ylabel('Distance') plt.show()
输出
以上代码产生以下结果:
scipy_reference.htm
广告