从中获取结果索引scipy.pdist(myArray,metric=“jaccard”)映射回原始数组?

2024-06-11 08:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在计算jaccard的相似性

y= 1 - scipy.spatial.distance.pdist(X,metric="jaccard")

X是一个m x n矩阵,作为这个函数的结果,我得到了一个大小为m choose 2的一维数组。如何将相似性值映射回一个对称数组或(非对称数组中的任何一种都可以),这样我就可以知道X中的哪两个向量(X中的每一行都是布尔向量)在y中生成了特定的jaccard相似性值?在


Tags: 函数矩阵scipy数组相似性metric向量spatial
2条回答

您可以使用^{}在完整的距离矩阵和上三角之间进行转换:

import numpy as np
from scipy.spatial import distance

m = 100
n = 200
X = np.random.randn(m, n)

d = distance.pdist(X, metric='jaccard')
print(d.shape)
# (4950,)

D = distance.squareform(d)
print D.shape
# (100, 100)

有一个称为scipy.spatial.distance.squareform(y)的模块,其中它将从scipy.spatial.distance.pdist(X,metric='jaccard')获得的压缩形式的一维矩阵转换为对称矩阵,因此从那里获得索引相对简单。在

所以我们可以做以下事情:

y=1-scipy.spatial.distance.pdist(x,metric='jaccard')
z=scipy.spatial.distance.squareform(y)

X是m x n输入矩阵。 这里y将是1 x (m choose 2)维矩阵(压缩距离矩阵) z将是m x m平方对称矩阵

相关问题 更多 >