想跳的鱼 发表于 2019-1-21 19:34:38

求助 help!!!

一个用numpy求向量余弦相似度的问题 求大佬解答一下 感谢

塔利班 发表于 2019-1-21 20:25:47

参数是2个矩阵,不用你写乘号

想跳的鱼 发表于 2019-1-21 21:25:56

塔利班 发表于 2019-1-21 20:25
参数是2个矩阵,不用你写乘号

改好了 可是每一个结果前面都会出现matrix 你知道怎么解决吗?

塔利班 发表于 2019-1-21 21:45:37

代码贴出来,不想整图片

想跳的鱼 发表于 2019-1-22 08:39:06

塔利班 发表于 2019-1-21 21:45
代码贴出来,不想整图片

import numpy as np


def cos_sim(vector_a, vector_b):
   
    # 计算两个向量之间的余弦相似度
    # param vector_a: 向量 a
    # param vector_b: 向量 b
    # return: sim
   
    vector_a = np.mat(vector_a)
    vector_b = np.mat(vector_b)
    num = np.matmul(vector_a , vector_b.T)
    denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
    cos = num / denom
    global sim
    sim = 0.5 + 0.5 * cos
    return sim


list1 = ((232.9502,232.9502,237.2201,231.3787,237.2201,226.0874),
(232.9502,232.9502,237.2201,231.3787,231.3787,268.5020),
(232.9502,232.9502,237.2201,231.3787,237.2201,256.9941),
(232.9502,232.9502,237.2201,231.3787,250.0087,247.2787),
(232.9502,232.9502,237.2201,199.0121,203.7241,244.2814),
(232.9502,232.9502,237.2201,199.0121,199.0121,254.0817),
(232.9502,232.9502,237.2201,199.0121,135.9120,232.9502),
(232.9502,232.9502,237.2201,199.0121,199.0121,203.7241),
(232.9502,232.9502,237.2201,199.0121,214.2976,259.6575),
(232.9502,232.9502,237.2201,199.0121,199.0121,243.2131))

array1 = np.array(list1)

list2=[]
i=0
j=1

while 0<=i<=9:
    while i<j<=9:
      a = array1
      b = array1
      cos_sim(a,b)
      sim.tolist()
      list2.append(sim)
      j += 1
    else:
      i+=1

list3 = sorted(list2)
print(list3)

塔利班 发表于 2019-1-22 09:47:42

你这现在才发,我电脑不在身边,你用np.array定义array1不行吗

想跳的鱼 发表于 2019-1-22 10:23:39

塔利班 发表于 2019-1-22 09:47
你这现在才发,我电脑不在身边,你用np.array定义array1不行吗

那请大佬 有时间帮我看一下 先谢谢了
页: [1]
查看完整版本: 求助 help!!!