Come calcolare la somiglianza del coseno in python


La somiglianza del coseno è una misura della somiglianza tra due vettori di uno spazio del prodotto interno.

Per due vettori, A e B, la somiglianza del coseno viene calcolata come segue:

Somiglianza coseno = ΣA i B i / (√ΣA i 2 √ΣB i 2 )

Questo tutorial spiega come calcolare la somiglianza del coseno tra vettori in Python utilizzando le funzioni della libreria NumPy .

Somiglianza coseno tra due vettori in Python

Il codice seguente mostra come calcolare la somiglianza del coseno tra due array in 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 somiglianza del coseno tra le due tabelle risulta essere 0.965195 .

Tieni presente che questo metodo funzionerà su due array di qualsiasi lunghezza:

 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

Tuttavia, questo funziona solo se i due array hanno la stessa lunghezza:

 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)

Commenti

1. Esistono diversi modi per calcolare la somiglianza del coseno utilizzando Python, ma come spiega questo thread di Stack Overflow , il metodo spiegato in questo articolo risulta essere il più veloce.

2. Fai riferimento aquesta pagina Wikipedia per saperne di più sulla somiglianza del coseno.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *