Comment calculer la similarité cosinus en Python



La similarité cosinus est une mesure de la similarité entre deux vecteurs d’un espace produit interne.

Pour deux vecteurs, A et B, la similarité cosinus est calculée comme suit :

Similarité cosinus = ΣA i B i / (√ΣA i 2 √ΣB i 2 )

Ce tutoriel explique comment calculer la similarité cosinus entre vecteurs en Python à l’aide des fonctions de la bibliothèque NumPy .

Similitude cosinus entre deux vecteurs en Python

Le code suivant montre comment calculer la similarité cosinus entre deux tableaux en 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

La similarité cosinus entre les deux tableaux s’avère être 0,965195 .

Notez que cette méthode fonctionnera sur deux tableaux de n’importe quelle longueur :

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

Cependant, cela ne fonctionne que si les deux tableaux sont de même longueur :

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)

Remarques

1. Il existe plusieurs façons de calculer la similarité cosinus à l’aide de Python, mais comme l’explique ce fil de discussion Stack Overflow , la méthode expliquée dans cet article s’avère être la plus rapide.

2. Reportez-vous àcette page Wikipédia pour en savoir plus sur la similarité cosinus.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *