Como calcular a similaridade de cossenos em python
A similaridade de cossenos é uma medida da similaridade entre dois vetores de um espaço de produto interno.
Para dois vetores, A e B, a similaridade de cosseno é calculada da seguinte forma:
Similaridade de cosseno = ΣA i B i / (√ΣA i 2 √ΣB i 2 )
Este tutorial explica como calcular a similaridade de cosseno entre vetores em Python usando funções da biblioteca NumPy .
Semelhança de cosseno entre dois vetores em Python
O código a seguir mostra como calcular a similaridade de cosseno entre duas matrizes em 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
A semelhança de cosseno entre as duas tabelas é 0,965195 .
Observe que este método funcionará em dois arrays de qualquer comprimento:
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
No entanto, isso só funciona se as duas matrizes tiverem o mesmo comprimento:
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)
Comentários
1. Existem várias maneiras de calcular a similaridade de cosseno usando Python, mas como este tópico do Stack Overflow explica, o método explicado neste artigo acaba sendo o mais rápido.
2. Consulteesta página da Wikipedia para saber mais sobre similaridade de cossenos.