¿Cómo calcular la similitud del coseno en Python?

En este artículo, calculamos la similitud del coseno entre los dos vectores distintos de cero. Un vector es una array NumPy de señal unidimensional de una sola moneda de diez centavos . La similitud del coseno es una medida de similitud, a menudo utilizada para medir la similitud del documento en el análisis de texto. Usamos la siguiente fórmula para calcular la similitud del coseno.

Similarity = (A.B) / (||A||.||B||) 

donde A y B son vectores:

  • AB es el producto escalar de A y B: se calcula como la suma del producto elemento-sabio de A y B.
  • ||A|| es la norma L2 de A: Se calcula como la raíz cuadrada de la suma de los cuadrados de los elementos del vector A.

Ejemplo 1:

En el siguiente ejemplo, calculamos la similitud del coseno entre los dos vectores (arrays 1-d NumPy). Para definir un vector aquí también podemos usar las Listas de Python.

Python

# import required libraries
import numpy as np
from numpy.linalg import norm
 
# define two lists or array
A = np.array([2,1,2,3,2,9])
B = np.array([3,4,2,4,5,5])
 
print("A:", A)
print("B:", B)
 
# compute cosine similarity
cosine = np.dot(A,B)/(norm(A)*norm(B))
print("Cosine Similarity:", cosine)

Producción:

Ejemplo 2:

En el siguiente ejemplo, calculamos la similitud del coseno entre un lote de tres vectores (array 2D NumPy) y un vector (array 1-D NumPy). 

Python

# import required libraries
import numpy as np
from numpy.linalg import norm
 
# define two lists or array
A = np.array([[2,1,2],[3,2,9], [-1,2,-3]])
B = np.array([3,4,2])
print("A:\n", A)
print("B:\n", B)
 
# compute cosine similarity
cosine = np.dot(A,B)/(norm(A, axis=1)*norm(B))
print("Cosine Similarity:\n", cosine)

Producción:

Observe que A tiene tres vectores y B es un solo vector. En el resultado anterior, obtenemos tres elementos en la array de similitud de coseno. El primer elemento corresponde a la similitud de coseno entre el primer vector (primera fila) de A y el segundo vector (B). El segundo elemento corresponde a la similitud de coseno entre el segundo vector (segunda fila) de A y el segundo vector (B). Y lo mismo para el tercer elemento.

Ejemplo 3:

En el siguiente ejemplo, calculamos la similitud del coseno entre las dos arrays bidimensionales. Aquí cada array tiene tres vectores. Aquí para calcular el producto escalar usando la m del producto por elementos.

Python

# import required libraries
import numpy as np
from numpy.linalg import norm
 
# define two arrays
A = np.array([[1,2,2],
               [3,2,2],
               [-2,1,-3]])
B = np.array([[4,2,4],
               [2,-2,5],
               [3,4,-4]])
 
print("A:\n", A)
print("B:\n", B)
 
# compute cosine similarity
cosine = np.sum(A*B, axis=1)/(norm(A, axis=1)*norm(B, axis=1))
 
print("Cosine Similarity:\n", cosine)
print("Cosine Similarity:\n", cosine)

Producción:

El primer elemento de la array de similitud de coseno es una similitud entre las primeras filas de A y B. De manera similar, el segundo elemento es la similitud de coseno entre las segundas filas de A y B. De manera similar para el tercer elemento.

Publicación traducida automáticamente

Artículo escrito por shahidedu7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *