小编Sal*_*Sal的帖子

具有numpy的大型稀疏矩阵的余弦相似度

以下代码使我的系统在完成之前耗尽了内存。

您能否建议一种在大型矩阵(例如下面的矩阵)上计算余弦相似度的更有效方法?

我想针对原始矩阵(mat)相对于所有其他矩阵计算65000行中的每一行的余弦相似度,以使结果为65000 x 65000矩阵,其中每个元素为原始矩阵中两行之间的余弦相似度矩阵。

import numpy as np
from scipy import sparse
from sklearn.metrics.pairwise import cosine_similarity

mat = np.random.rand(65000, 10)

sparse_mat = sparse.csr_matrix(mat)

similarities = cosine_similarity(sparse_mat)
Run Code Online (Sandbox Code Playgroud)

在运行了最后一行之后,我总是会用完内存,并且该程序会因MemoryError冻结或崩溃。无论我在8 GB本地RAM上还是在64 GB EC2实例上运行,都会发生这种情况。

python memory numpy matrix cosine-similarity

5
推荐指数
2
解决办法
5959
查看次数

创建余弦相似度矩阵numpy

假设我有一个如下的numpy矩阵:

array([array([ 0.0072427 ,  0.00669255,  0.00785213,  0.00845336,  0.01042869]),
   array([ 0.00710799,  0.00668831,  0.00772334,  0.00777796,  0.01049965]),
   array([ 0.00741872,  0.00650899,  0.00772273,  0.00729002,  0.00919407]),
   array([ 0.00717589,  0.00627021,  0.0069514 ,  0.0079332 ,  0.01069545]),
   array([ 0.00617369,  0.00590539,  0.00738468,  0.00761699,  0.00886915])], dtype=object)
Run Code Online (Sandbox Code Playgroud)

如何生成5 x 5矩阵,其中矩阵的每个索引是原始矩阵中两个对应行的余弦相似度?

例如,第0行第2列的值将是原始矩阵中第1行和第3行之间的余弦相似度。

这是我尝试过的:

from sklearn.metrics import pairwise_distances
from scipy.spatial.distance import cosine
import numpy as np

#features is a column in my artist_meta data frame
#where each value is a numpy array of 5 floating point values, similar to the
#form of the matrix …
Run Code Online (Sandbox Code Playgroud)

python numpy matrix cosine-similarity

3
推荐指数
1
解决办法
8639
查看次数

标签 统计

cosine-similarity ×2

matrix ×2

numpy ×2

python ×2

memory ×1