scipy.cluster.hierarchy.

from_mlab_linkage#

scipy.cluster.hierarchy.from_mlab_linkage(Z)[source]#

将 MATLAB(TM) 生成的连接矩阵转换为与此模块兼容的新连接矩阵。

此转换执行以下两项操作

  • 索引从 1..N 转换为 0..(N-1) 形式,并且

  • 添加第四列 Z[:,3],其中 Z[i,3] 表示非单例簇 i 中原始观测值(叶节点)的数量。

当从 MATLAB 生成的旧数据文件加载连接时,此函数非常有用。

参数:
Zndarray

由 MATLAB(TM) 生成的连接矩阵。

返回值:
ZSndarray

scipy.cluster.hierarchy 兼容的连接矩阵。

参见

linkage

有关连接矩阵的描述。

to_mlab_linkage

从 SciPy 转换为 MATLAB 格式。

说明

from_mlab_linkage 除了 NumPy 之外,还具有对 Python Array API Standard 兼容后端的实验性支持。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)的组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

⚠️ 合并块

不适用

有关更多信息,请参见 对数组 API 标准的支持

示例

>>> import numpy as np
>>> from scipy.cluster.hierarchy import ward, from_mlab_linkage

给定 MATLAB 格式的连接矩阵 mZ,我们可以使用 scipy.cluster.hierarchy.from_mlab_linkage 将其导入为 SciPy 格式

>>> mZ = np.array([[1, 2, 1], [4, 5, 1], [7, 8, 1],
...                [10, 11, 1], [3, 13, 1.29099445],
...                [6, 14, 1.29099445],
...                [9, 15, 1.29099445],
...                [12, 16, 1.29099445],
...                [17, 18, 5.77350269],
...                [19, 20, 5.77350269],
...                [21, 22,  8.16496581]])
>>> Z = from_mlab_linkage(mZ)
>>> Z
array([[  0.        ,   1.        ,   1.        ,   2.        ],
       [  3.        ,   4.        ,   1.        ,   2.        ],
       [  6.        ,   7.        ,   1.        ,   2.        ],
       [  9.        ,  10.        ,   1.        ,   2.        ],
       [  2.        ,  12.        ,   1.29099445,   3.        ],
       [  5.        ,  13.        ,   1.29099445,   3.        ],
       [  8.        ,  14.        ,   1.29099445,   3.        ],
       [ 11.        ,  15.        ,   1.29099445,   3.        ],
       [ 16.        ,  17.        ,   5.77350269,   6.        ],
       [ 18.        ,  19.        ,   5.77350269,   6.        ],
       [ 20.        ,  21.        ,   8.16496581,  12.        ]])

正如预期的那样,返回的连接矩阵 Z 包含一个额外的列,用于计算每个簇中原始样本的数量。此外,所有簇索引都减少了 1(MATLAB 格式使用 1-索引,而 SciPy 使用 0-索引)。