Cómo calcular la similitud del coseno en Python

La similitud de coseno es una medida de la similitud entre dos vectores de un espacio de producto interno.

Para dos vectores, A y B, la similitud del coseno se calcula como:

Similitud de coseno = ΣA i B i / (√ΣA i 2 √ΣB i 2 )

Este tutorial explica cómo calcular la similitud de coseno entre vectores en Python usando funciones de la biblioteca NumPy .

Similitud de coseno entre dos vectores en Python

El siguiente código muestra cómo calcular la similitud de coseno entre dos matrices en Python:

de numpy import dot
 de numpy. norma de importación de linalg 

#define arrays
 a = [23, 34, 44, 45, 42, 27, 33, 34]
b = [17, 18, 22, 26, 26, 29, 31, 30]

#calcular la similitud del coseno
 cos_sim = punto (a, b) / ( norma (a) * norma (b))

cos_sim

0,965195008357566

La similitud de coseno entre las dos matrices resulta ser 0,965195 .

Tenga en cuenta que este método funcionará en dos matrices de cualquier longitud:

importar numpy como np 
de numpy import dot
 de numpy. norma de importación de linalg 

# definir matrices
 a = np.random.randint (10, tamaño = 100 )
b = np.random.randint (10, tamaño = 100 )

#calcular la similitud del coseno
 cos_sim = punto (a, b) / ( norma (a) * norma (b))

cos_sim

0,7340201613960431

Sin embargo, solo funciona si las dos matrices tienen la misma longitud:

importar numpy como np 
de numpy import dot
 de numpy. norma de importación de linalg 

#define arrays
 a = np.random.randint (10, size = 90 ) # length = 90 
b = np.random.randint (10, size = 100 ) # length = 100

#calcular la similitud del coseno
 cos_sim = punto (a, b) / ( norma (a) * norma (b))

cos_sim

ValueError : formas (90,) y (100,) no alineadas: 90 (dim 0)! = 100 (dim 0)

Notas

1. Hay varias formas de calcular la similitud de coseno usando Python, pero como explica este hilo de Stack Overflow , el método explicado en esta publicación resulta ser el más rápido.

2. Consulte esta página de Wikipedia para obtener más detalles sobre la similitud de coseno.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

Deja un comentario

Un valor atípico es una observación que se encuentra anormalmente alejada de otros valores en un conjunto de datos. Los…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!