Similitud de coseno en Python
-
Utilice el módulo
scipy
para calcular la similitud de coseno entre dos listas en Python -
Utilice el módulo
NumPy
para calcular la similitud de coseno entre dos listas en Python -
Utilice el módulo
sklearn
para calcular la similitud de coseno entre dos listas en Python -
Utilice el módulo
torch
para calcular la similitud de coseno entre dos listas en Python
La similitud del coseno mide la similitud entre las listas de vectores calculando el ángulo del coseno entre las dos listas de vectores. Si considera la función coseno, su valor a 0 grados es 1 y -1 a 180 grados. Esto significa que para dos vectores superpuestos, el valor del coseno será máximo y mínimo para dos vectores exactamente opuestos.
En este artículo, calcularemos la similitud de coseno entre dos listas de tamaños iguales.
Utilice el módulo scipy
para calcular la similitud de coseno entre dos listas en Python
La función spatial.cosine.distance()
del módulo scipy
calcula la distancia en lugar de la similitud del coseno, pero para lograr eso, podemos restar el valor de la distancia de 1.
Por ejemplo,
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
Producción :
0.9720951480078084
Utilice el módulo NumPy
para calcular la similitud de coseno entre dos listas en Python
La función numpy.dot()
calcula el producto escalar de los dos vectores pasados como parámetros. La función numpy.norm()
devuelve la norma vectorial.
Podemos usar estas funciones con la fórmula correcta para calcular la similitud del coseno.
Por ejemplo,
from numpy import dot
from numpy.linalg import norm
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = dot(List1, List2) / (norm(List1) * norm(List2))
print(result)
Producción :
0.9720951480078084
Si hay varios o una lista de vectores y un vector de consulta para calcular similitudes de coseno, podemos usar el siguiente código.
import numpy as np
List1 = np.array([[4, 45, 8, 4], [2, 23, 6, 4]])
List2 = np.array([2, 54, 13, 15])
similarity_scores = List1.dot(List2) / (
np.linalg.norm(List1, axis=1) * np.linalg.norm(List2)
)
print(similarity_scores)
Producción :
[0.98143311 0.99398975]
Utilice el módulo sklearn
para calcular la similitud de coseno entre dos listas en Python
En el módulo sklearn
, hay una función incorporada llamada cosine_similarity()
para calcular la similitud del coseno.
Vea el código a continuación.
from sklearn.metrics.pairwise import cosine_similarity, cosine_distances
A = np.array([10, 3])
B = np.array([8, 7])
result = cosine_similarity(A.reshape(1, -1), B.reshape(1, -1))
print(result)
Producción :
[[0.91005765]]
Utilice el módulo torch
para calcular la similitud de coseno entre dos listas en Python
Cuando tratamos con tensores N-dimensionales que tienen formas (m, n), podemos usar la función consine_similarity()
del módulo torch
para encontrar la similitud del coseno.
Por ejemplo,
import torch
import torch.nn.functional as F
t1 = [3, 45, 6, 8]
a = torch.FloatTensor(t1)
t2 = [4, 54, 3, 7]
b = torch.FloatTensor(t2)
result = F.cosine_similarity(a, b, dim=0)
print(result)
Producción :
tensor(0.9960)
Las listas se convierten en tensores utilizando el módulo torch.FloatTensor()
.