Как рассчитать косинусное сходство в Python


Косинусное сходство — это мера сходства между двумя векторами пространства внутреннего произведения.

Для двух векторов, 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. Обратитесь кэтой странице Википедии, чтобы узнать больше о сходстве косинусов.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.