从 scipy.pdist(myArray,metric="jaccard") 获取结果索引以映射回原始数组?
Get indices of results from scipy.pdist(myArray,metric="jaccard") to map back to original array?
我正在尝试计算 jaccard 相似度
y= 1 - scipy.spatial.distance.pdist(X,metric="jaccard")
X 是一个 m x n
矩阵,作为此函数的结果,我得到了一个大小为 m choose 2
的一维数组。我如何将相似性值映射回以获得对称数组或(非对称数组两种方式都很好)所以我可以分辨出 X 中的哪两个向量(X 中的每一行都是布尔向量)生成了特定的 jaccard 相似性值在 y?
您可以使用 scipy.spatial.distance.squareform
在完整的 m x n 距离矩阵和上三角之间进行转换:
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
对称方阵
我正在尝试计算 jaccard 相似度
y= 1 - scipy.spatial.distance.pdist(X,metric="jaccard")
X 是一个 m x n
矩阵,作为此函数的结果,我得到了一个大小为 m choose 2
的一维数组。我如何将相似性值映射回以获得对称数组或(非对称数组两种方式都很好)所以我可以分辨出 X 中的哪两个向量(X 中的每一行都是布尔向量)生成了特定的 jaccard 相似性值在 y?
您可以使用 scipy.spatial.distance.squareform
在完整的 m x n 距离矩阵和上三角之间进行转换:
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
对称方阵