【发布时间】:2021-08-07 02:11:12
【问题描述】:
Scipy 的 pdist 函数需要一个形状均匀的 numpy 数组作为输入。
工作示例:
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform
#Example distance function.
def dfun(u, v):
return u.sum() + v.sum()
dat0 = np.array([-1, 1,-3, 1])
dat1 = np.array([-1, 1,-3, 1])
dat2 = np.array([ 1, 1, 1, 1])
data = np.array([dat0, dat1, dat2])
distance_matrix = pdist(data, dfun)
squareform(distance_matrix)
我有一个自定义距离函数,它适用于游程编码数据,因此数组的大小可能会有所不同。使用以下输入时
dat0 = np.array([-1, 1,-4, 1])
dat1 = np.array([-1, 1,-3, 1, 1])
dat2 = np.array([ 1,-6])
即使距离函数可以很好地处理输入,也会引发值错误ValueError: A 2-dimensional array must be passed.。是否存在计算这些值的替代方法?
编辑:上述 sn-p 中的距离函数只是一个度量标准的示例,它不关心数据点内的实际元素数量。在我的例子中,https://github.com/mclmza/AWarp 用于计算稀疏数据集示例系列的 dtw:[1,-456,1,1,-23,1],因此填充数据不是一个有效的选项。
【问题讨论】:
-
Numpy 函数适用于 ND 数组。不支持可变大小的数组集。
-
你所说的距离矩阵是什么?你能澄清和详细说明吗?
-
我想得到一个由 pdist 返回的压缩距离矩阵,它可以用作 scipy.cluster.hierarchy.linkage 方法的输入。这个压缩距离矩阵是一个平面有序列表,计算了 n 个观测值之间的成对距离