如何计算矩阵中的余弦相似度?

时间:2018-11-20 10:03:56

标签: python-3.x numpy scikit-learn cosine-similarity

我的原始数据很大。关于: 数据=

[[0, 0, 0, ......0]
 [0, 0.124, 0, ..0]
         .
         .
         .
 [0, 0, 0, 0, 0.174]]

data2 =

[[0, 0, 0, ......0]
 [0, 0.74, 0, ..,0]
         .
         .
         .
 [0, 0, 0.15, 0, 0]]

data和data2中的10个矩阵的每个矩阵的值均为3687

我想计算每个矩阵的余弦相似度,就像数据中的第一个矩阵计算data2中的第一个矩阵,第二个到最后一个矩阵一样,依此类推,我想获得10X10的相似度得分,我使用sklearn和sklearn .metrics.pairwise以拟合模型并计算余弦相似度:

import numpy as np
from sklearn import manifold
A = np.matrix(cop)
A = 1.-A
model = manifold.TSNE(metric="precomputed")
Y = model.fit_transform(A)

但它显示:

X should be a square distance matrix

我使用简单得多的数据作为试验,并且确实合适。

如何计算余弦相似度并获得10X10的余弦分数?

1 个答案:

答案 0 :(得分:0)

问题的确切性质取决于代码中的cop。您可能必须发布一个完整的错误代码示例,以获得良好的答案。

下面是将cosine_similarityTSNE结合使用的完整示例(带有随机数据):

import numpy as np
from sklearn import manifold
from sklearn.metrics.pairwise import cosine_similarity

data1 = np.random.rand(10,3687)
data2 = np.random.rand(10,3687)
dist = cosine_similarity(data1, data2)

model = manifold.TSNE(metric="precomputed")
Y = model.fit_transform(dist)