Blog

ES
Operaciones con vectores y matrices en Python

Operaciones con vectores y matrices en Python

6 min de lectura

Series: Álgebra lineal para Machine Learning

2 partes

¿Alguna vez te has preguntado cómo Netflix decide qué recomendarte o cómo un algoritmo mide qué tan "bueno" es un candidato? La respuesta no es magia, es Álgebra Lineal.

Resta y multiplicación

  • En la resta (-), se resta componente por componente.
  • En la multiplicación (*), se multiplica componente por componente
import numpy as np

v1 = np.array([10, 20, 30])
v2 = np.array([1, 2, 3])

# Resta
resta = v1 - v2  # Resultado: [9, 18, 27]

# Multiplicación
mult = v1 * v2  # Resultado: [10, 40, 90]

La resta nos permite medir distancias, errores y cambios de dirección en espacios multidimensionales.

Norma

Es una función que asigna un número real positivo a un vector. De forma sencilla, es la medida de la longitud o magnitud de un vector.

Si piensas en un vector como una flecha que va desde el origen hasta un punto, la norma es la "distancia" que recorre esa flecha.

Usos de la norma

  • Normalización de datos: la norma se usa para reescalar los vectores de modo que todos tengan longitud 1 (vectores unitarios), permitiendo que el modelo compare "manzanas con manzanas".
  • Error y distancia: como vimos con la resta, si restas dos vectores y calculas la norma del resultado, obtienes la distancia exacta entre esos dos puntos de datos.

Para hallar la normal de un vector debemos usar la función norm de numpy.

v = np.array([10, 20, 30])
np.linalg.norm (v)

Producto punto

El producto punto está detrás de los sistemas de recomendación, búsqueda semántica y los modelos de lenguaje.

El producto punto nos ayuda a medir la relación geométrica entre dos vectores, devolviendo un escalar en lugar de un vector.

Se debe tener en cuenta una regla: los dos vectores deben tener el mismo número de componentes.

v1 = np.array([10, 20, 30])
v2 = np.array([1, 2, 3])

prod_punto = np.dot(v1, v2)  # Resultado: 140 (10*1 + 20*2 + 30*3)

Práctica

Vamos a la práctica. Para esto, haremos un pequeño programa que ayude a un reclutador de una empresa a encontrar los mejores candidatos.

Definiremos dos vectores: uno del perfil ideal y otro de un candidato, donde cada componente es su nivel de habilidades en (Java, SQL, Inglés):

perfil_ideal = np.array([10, 8, 9])
perfil_candidato = np.array([8, 9, 4])

Calcularemos en qué habilidades falla el candidato, para eso usaremos la resta:

error = perfil_ideal - perfil_candidato
print(f"Brecha de habilidades: {error}") # [2, -1, 5] -> Le faltan 2 en Java, le sobra 1 en SQL y le faltan 5 en Inglés.

Ahora usaremos la norma para saber que qué grande es el error total:

distancia_error = np.linalg.norm(error)
print(f"Magnitud del error total: {distancia_error:.2f}")

Si calculamos la norma de la resta, obtenemos la distancia euclidiana.

Lo siguiente es normalizar los datos para que trabajen en la misma proporción. Aquí usaremos la norma convirtiendo los vectores en vectores unitarios:

perfil_ideal_unit = perfil_ideal / np.linalg.norm(perfil_ideal)
perfil_cand_unit = perfil_candidato / np.linalg.norm(perfil_candidato)
print(f"Perfil ideal normalizado: {perfil_ideal_unit}")

Y por último, haremos uso del producto punto con la similitud del coseno para saber que tan parecidos son, donde 1 es idéntico y 0 es diferente.

similitud = np.dot(perfil_ideal_unit, perfil_cand_unit)
print(f"Similitud: {similitud:.4f}")

Resumen

  • La resta nos ayuda a medir qué tan lejos estamos de la meta. Realidad - Predicción = Error.
  • La norma es cuánto mide un vector (su intensidad).
  • El producto punto multiplica los componentes y los suma.

Comparte este artículo en

Avatar byandrev

Andres Parra

Software Engineer

Soy Andrés Parra, Ingeniero de Software apasionado por crear soluciones tecnológicas escalables e innovadoras. Me especializo en la construcción de aplicaciones web modernas, dominando un stack versátil que incluye JavaScript, TypeScript, Python y Java, junto con frameworks como React, Next.js y Spring Boot. Interesado en las últimas tecnologías y herramientas de desarrollo.