Similitude de cosinus en Python
-
Utilisez le module
scipy
pour calculer la similarité de cosinus entre deux listes en Python -
Utilisez le module
NumPy
pour calculer la similarité de cosinus entre deux listes en Python -
Utilisez le module
sklearn
pour calculer la similarité de cosinus entre deux listes en Python -
Utilisez le module
torch
pour calculer la similarité de cosinus entre deux listes en Python
La similarité cosinus mesure la similarité entre les listes vectorielles en calculant l’angle cosinus entre les deux listes vectorielles. Si vous considérez la fonction cosinus, sa valeur à 0 degré est 1 et -1 à 180 degrés. Cela signifie que pour deux vecteurs qui se chevauchent, la valeur du cosinus sera maximale et minimale pour deux vecteurs exactement opposés.
Dans cet article, nous allons calculer la similarité en cosinus entre deux listes de tailles égales.
Utilisez le module scipy
pour calculer la similarité de cosinus entre deux listes en Python
La fonction spatial.cosine.distance()
du module scipy
calcule la distance au lieu de la similarité cosinus, mais pour y parvenir, on peut soustraire la valeur de la distance de 1.
Par example,
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
Production:
0.9720951480078084
Utilisez le module NumPy
pour calculer la similarité de cosinus entre deux listes en Python
La fonction numpy.dot()
calcule le produit scalaire des deux vecteurs passés en paramètres. La fonction numpy.norm()
renvoie la norme vectorielle.
Nous pouvons utiliser ces fonctions avec la formule correcte pour calculer la similarité de cosinus.
Par example,
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)
Production:
0.9720951480078084
S’il existe plusieurs ou une liste de vecteurs et un vecteur de requête pour calculer les similitudes de cosinus, nous pouvons utiliser le code suivant.
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)
Production:
[0.98143311 0.99398975]
Utilisez le module sklearn
pour calculer la similarité de cosinus entre deux listes en Python
Dans le module sklearn
, il existe une fonction intégrée appelée cosine_similarity()
pour calculer la similarité du cosinus.
Voir le code ci-dessous.
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)
Production:
[[0.91005765]]
Utilisez le module torch
pour calculer la similarité de cosinus entre deux listes en Python
Lorsque nous traitons des tenseurs à N dimensions ayant des formes (m,n), nous pouvons utiliser la fonction consine_similarity()
du module torch
pour trouver la similarité de cosinus.
Par example,
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)
Production:
tensor(0.9960)
Les listes sont converties en tenseurs à l’aide du module torch.FloatTensor()
.