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-索引)。