Kosinus-Ähnlichkeit in Python

Shivam Arora 30 Januar 2023
  1. Verwenden Sie das Modul scipy, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
  2. Verwenden Sie das Modul NumPy, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
  3. Verwenden Sie das Modul sklearn, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
  4. Verwenden Sie das Modul torch, um die Kosinus-Ähnlichkeit zwischen zwei Listen in Python zu berechnen
Kosinus-Ähnlichkeit in Python

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.

Verwandter Artikel - Python Math