Косинусное сходство — это мера сходства между двумя векторами пространства внутреннего произведения.
Для двух векторов, A и B, косинусное сходство вычисляется как:
Подобие косинуса = ΣA i B i / (√ΣA i 2 √ΣB i 2 )
В этом руководстве объясняется, как вычислить косинусное сходство между векторами в Python с использованием функций из библиотеки NumPy .
Косинусное сходство между двумя векторами в Python
Следующий код показывает, как вычислить косинусное сходство между двумя массивами в Python:
from numpy import dot
from numpy. linalg import norm
#define arrays
a = [23, 34, 44, 45, 42, 27, 33, 34]
b = [17, 18, 22, 26, 26, 29, 31, 30]
#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)\* norm (b))
cos_sim
0.965195008357566
Косинусное сходство между двумя массивами оказывается равным 0,965195 .
Обратите внимание, что этот метод будет работать с двумя массивами любой длины:
import numpy as np
from numpy import dot
from numpy. linalg import norm
#define arrays
a = np.random.randint(10, size= 100 )
b = np.random.randint(10, size= 100 )
#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)\* norm (b))
cos_sim
0.7340201613960431
Однако это работает только в том случае, если два массива имеют одинаковую длину:
import numpy as np
from numpy import dot
from numpy. linalg import norm
#define arrays
a = np.random.randint(10, size= 90 ) #length=90
b = np.random.randint(10, size= 100 ) #length=100
#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)\* norm (b))
cos_sim
ValueError : shapes (90,) and (100,) not aligned: 90 (dim 0) != 100 (dim 0)
Заметки
1. Существует несколько способов вычисления подобия косинуса с помощью Python, но, как объясняется в этой ветке Stack Overflow , метод, описанный в этом посте, оказывается самым быстрым.
2. Обратитесь кэтой странице Википедии, чтобы узнать больше о сходстве косинусов.