Kosinus-Ähnlichkeit in Python
-
Verwenden Sie das Modul
scipy
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen -
Verwenden Sie das Modul
NumPy
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen -
Verwenden Sie das Modul
sklearn
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen -
Verwenden Sie das Modul
torch
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Die Kosinusähnlichkeit misst die Ähnlichkeit zwischen Vektorlisten durch Berechnen des Kosinuswinkels zwischen den beiden Vektorlisten. Wenn Sie die Kosinusfunktion betrachten, ist ihr Wert bei 0 Grad 1 und -1 bei 180 Grad. Dies bedeutet, dass für zwei überlappende Vektoren der Kosinuswert maximal und für zwei genau gegenüberliegende Vektoren minimal ist.
In diesem Artikel berechnen wir die Kosinusähnlichkeit zwischen zwei Listen gleicher Größe.
Verwenden Sie das Modul scipy
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Die Funktion spatial.cosine.distance()
aus dem Modul scipy
berechnet die Distanz anstelle der Kosinus-Ähnlichkeit, aber dafür können wir den Wert der Distanz von 1 subtrahieren.
Beispielsweise,
from scipy import spatial
List1 = [4, 47, 8, 3]
List2 = [3, 52, 12, 16]
result = 1 - spatial.distance.cosine(List1, List2)
print(result)
Ausgabe:
0.9720951480078084
Verwenden Sie das Modul NumPy
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Die Funktion numpy.dot()
berechnet das Skalarprodukt der beiden als Parameter übergebenen Vektoren. Die Funktion numpy.norm()
gibt die Vektornorm zurück.
Wir können diese Funktionen mit der richtigen Formel verwenden, um die Kosinusähnlichkeit zu berechnen.
Beispielsweise,
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)
Ausgabe:
0.9720951480078084
Wenn es mehrere oder eine Liste von Vektoren und einen Abfragevektor gibt, um Kosinusähnlichkeiten zu berechnen, können wir den folgenden Code verwenden.
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)
Ausgabe:
[0.98143311 0.99398975]
Verwenden Sie das Modul sklearn
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Im Modul sklearn
gibt es eine eingebaute Funktion namens cosine_similarity()
, um die Kosinus-Ähnlichkeit zu berechnen.
Siehe den Code unten.
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)
Ausgabe:
[[0.91005765]]
Verwenden Sie das Modul torch
, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Wenn es sich um N-dimensionale Tensoren mit Formen (m,n) handelt, können wir die Funktion consine_similarity()
aus dem Modul torch
verwenden, um die Kosinus-Ähnlichkeit zu finden.
Beispielsweise,
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)
Ausgabe:
tensor(0.9960)
Listen werden mit dem Modul torch.FloatTensor()
in Tensoren umgewandelt.