给定一个稀疏矩阵清单,计算矩阵中每个列(或行)之间的余弦距离的最佳方法是什么?我宁愿不迭代 n-select-2次。
假设输入矩阵是:
A=
[0 1 0 0 1
0 0 1 1 1
1 1 0 1 0]
稀疏的代表是:
A =
0, 1
0, 4
1, 2
1, 3
1, 4
2, 0
2, 1
2, 3
在 Python 中,使用矩阵输入格式很简单:
import numpy as np
from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine
A = np.array(
[[0, 1, 0, 0, 1],
[0, 0, 1, 1, 1],
[1, 1, 0, 1, 0]])
dist_out = 1-pairwise_distances(A, metric="cosine")
dist_out
给予:
array([[ 1. , 0.40824829, 0.40824829],
[ 0.40824829, 1. , 0.33333333],
[ 0.40824829, 0.33333333, 1. ]])
对于完全矩阵输入来说,这很好,但是我真的想从稀疏表示开始(由于矩阵的大小和稀疏性)。对于如何最好地实现这一目标有什么想法吗?先谢谢你。