Hoe cosinusgelijkenis in python te berekenen


Cosinus-overeenkomst is een maatstaf voor de overeenkomst tussen twee vectoren van een inproductruimte.

Voor twee vectoren, A en B, wordt de cosinusovereenkomst als volgt berekend:

Cosinusovereenkomst = ΣA ik B ik / (√ΣA ik 2 √ΣB ik 2 )

In deze tutorial wordt uitgelegd hoe u de cosinusovereenkomst tussen vectoren in Python kunt berekenen met behulp van functies uit de NumPy- bibliotheek.

Cosinus-overeenkomst tussen twee vectoren in Python

De volgende code laat zien hoe je de cosinusovereenkomst tussen twee arrays in Python kunt berekenen:

 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

De cosinusovereenkomst tussen de twee tabellen blijkt 0,965195 te zijn.

Merk op dat deze methode werkt op twee arrays van elke lengte:

 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

Dit werkt echter alleen als de twee arrays dezelfde lengte hebben:

 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)

Opmerkingen

1. Er zijn verschillende manieren om cosinusgelijkenis te berekenen met Python, maar zoals deze Stack Overflow-thread uitlegt, blijkt de methode die in dit artikel wordt uitgelegd de snelste.

2. Raadpleegdeze Wikipedia-pagina voor meer informatie over cosinusgelijkenis.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert