Somiglianza coseno in Python
-
Usa il modulo
scipy
per calcolare la somiglianza del coseno tra due elenchi in Python -
Usa il modulo
NumPy
per calcolare la somiglianza del coseno tra due elenchi in Python -
Usa il modulo
sklearn
per calcolare la somiglianza del coseno tra due elenchi in Python -
Usa il modulo
torch
per calcolare la somiglianza del coseno tra due elenchi in Python
La somiglianza del coseno misura la somiglianza tra gli elenchi di vettori calcolando l’angolo del coseno tra i due elenchi di vettori. Se consideri la funzione coseno, il suo valore a 0 gradi è 1 e -1 a 180 gradi. Ciò significa che per due vettori sovrapposti, il valore del coseno sarà massimo e minimo per due vettori esattamente opposti.
In questo articolo, calcoleremo la somiglianza del coseno tra due elenchi di dimensioni uguali.
Usa il modulo scipy
per calcolare la somiglianza del coseno tra due elenchi in Python
La funzione spatial.cosine.distance()
del modulo scipy
calcola la distanza invece della somiglianza coseno, ma per ottenere ciò, possiamo sottrarre il valore della distanza da 1.
Per esempio,
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
Produzione:
0.9720951480078084
Usa il modulo NumPy
per calcolare la somiglianza del coseno tra due elenchi in Python
La funzione numpy.dot()
calcola il prodotto scalare dei due vettori passati come parametri. La funzione numpy.norm()
restituisce la norma vettoriale.
Possiamo usare queste funzioni con la formula corretta per calcolare la somiglianza del coseno.
Per esempio,
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)
Produzione:
0.9720951480078084
Se ci sono più o un elenco di vettori e un vettore di query per calcolare le somiglianze del coseno, possiamo usare il seguente codice.
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)
Produzione:
[0.98143311 0.99398975]
Usa il modulo sklearn
per calcolare la somiglianza del coseno tra due elenchi in Python
Nel modulo sklearn
, c’è una funzione incorporata chiamata cosine_similarity()
per calcolare la somiglianza del coseno.
Vedi il codice qui sotto.
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)
Produzione:
[[0.91005765]]
Usa il modulo torch
per calcolare la somiglianza del coseno tra due elenchi in Python
Quando abbiamo a che fare con tensori N-dimensionali aventi forme (m,n), possiamo usare la funzione consine_similarity()
del modulo torch
per trovare la somiglianza del coseno.
Per esempio,
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)
Produzione:
tensor(0.9960)
Le liste vengono convertite in tensori utilizzando il modulo torch.FloatTensor()
.