向量与矩阵、矩阵与矩阵的余弦相似度
程序员文章站
2022-07-12 09:28:45
...
向量与矩阵、矩阵与矩阵的余弦相似度
很简单,将公式套上就行了。
python 代码
import numpy as np
a = np.array([[1, 2, 1, 2, 3, 5, 6, 2]])
b = np.array([
[1, 2, 1, 2, 3, 5, 6, 2],
[1, 2, 1, 2, 3, 5, 6, 2],
[2, 3, 3, 2, 1, 2, 1, 1],
[2, 2, 1, 1, 1, 2, 4, 4]
])
c = np.array([
[1, 2, 1, 2, 3, 5, 6, 2],
[2, 1, 1, 2, 1, 2, 3, 3],
[2, 3, 3, 2, 1, 2, 1, 1],
[2, 2, 1, 1, 1, 2, 4, 4]
])
# 向量与向量的余弦相似度
def vector_vector(arr, brr):
return arr.dot(brr.T) / (np.sqrt(np.sum(arr*arr)) * np.sqrt(np.sum(brr*brr)))
# 向量与矩阵的余弦相似度
def vector_matrix(arr, brr):
return arr.dot(brr.T) / (np.sqrt(np.sum(arr*arr, axis=1)) * np.sqrt(np.sum(brr*brr, axis=1)))
# 矩阵与矩阵的余弦相似度
def matrix_matrix(arr, brr):
return arr.dot(brr.T).diagonal() / ((np.sqrt(np.sum(arr*arr, axis=1))) * np.sqrt(np.sum(brr*brr, axis=1)))
print(vector_vector(a, a))
print(vector_matrix(a, b))
print(matrix_matrix(b, c))
输出结果
[[1.]]
[[1. 1. 0.68376346 0.85941947]]
[1. 0.87369775 1. 1. ]```
上一篇: 查找数组中的重复元素
下一篇: 快速除去数组中某个值的元素和重复的元素