python - 使用来自两个不同字典和返回键的值进行计算
问题描述
我正在尝试计算 dict1 的所有值和 dict2 的所有值之间的余弦相似度。完成后,我想返回相似度高的字典的键。为此,我想将余弦相似度的结果保存在相似度字典中。这是我的尝试:
similarity_dictionary = {}
for x in dict1:
for y in dict2:
for x_key, x_val in dict1.items():
for y_key, y_val in dict2.items():
cos_sim = numpy.dot(x_val, y_val)/(norm(x_val,)*norm(y_val))
dict_of_sims[[x_key, y_key]] = cos_sim
这给了我以下错误:
ValueError: shapes (1,300) and (1,300) not aligned: 300 (dim 1) != 1 (dim 0)
有人可以帮忙 1. 解释错误和 2. 引导我走向正确的方向吗?先感谢您!
解决方案
看起来您正在尝试计算两个1x300
矩阵的点积。该错误只是表明这不起作用,因为您只能将m x n
矩阵与n x p
矩阵相乘(即“内部维度”需要相同)。
此外,如果您不提供最小的工作示例,则很难说如何改进您的代码。