Escalares, vectores y tensores en Machine Learning
Clase 4 de 16 • Curso de Álgebra Lineal para Machine Learning
Contenido del curso
Operaciones con Vectores y Matrices
Multiplicación de Matrices
Construcción de un Modelo de Regresión Lineal
Comprender cómo representar datos con escalares, vectores, matrices y tensores es clave para preparar información en Machine Learning. Aquí verás, con ejemplos en Google Colab y NumPy, cómo pasar del dato simple a estructuras que alimentan modelos reales, además de visualizar con Matplotlib.
¿Cómo pasar de un escalar a un vector con NumPy?
Un escalar es un número único: precio, edad o metros cuadrados. Un vector es una lista ordenada de escalares que describe un objeto completo: por ejemplo, una casa con metros cuadrados, habitaciones y precio. En código, crear el vector producto A en NumPy se hace con un array.
- Un vector se ve en NumPy como un array de una dimensión.
- Sus atributos
ndim,shapeysizerevelan estructura y tamaño. - Idea clave: el número de componentes del vector define el espacio geométrico donde “vive”. Dos componentes: plano 2D. Tres componentes: espacio 3D. En producción, los vectores pueden tener cientos o millones de dimensiones.
¿Qué significan ndim, shape y size?
ndim: cantidad de ejes del array. Un vector tiene 1.shape: tupla con la forma. Para un vector con 2 elementos:(2,).size: número total de elementos. Aquí: 2.
import numpy as np
producto_A = np.array([20.0, 4.5])
print(f"vector producto: {producto_A}")
print(f"numero de ejes o dimensiones del producto: {producto_A.ndim}")
print(f"forma del producto: {producto_A.shape}")
print(f"numero total de elementos del producto: {producto_A.size}")
¿Cómo graficar un vector con Matplotlib?
Usa plt.quiver para dibujar una flecha desde el origen hasta los componentes x e y del vector. Etiqueta ejes para dar contexto: precio en x y calificación en y.
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6))
plt.quiver(0, 0, producto_A[0], producto_A[1], angles='xy', scale_units='xy', scale=1, color='red')
plt.title('Producto A')
plt.xlabel('precio')
plt.ylabel('calificación')
plt.xlim(0, 25)
plt.ylim(0, 10)
plt.grid(True, alpha=0.3)
plt.show()
¿Cómo organizar conjuntos en matrices para machine learning?
Cuando los datos llegan en masa, pasamos de vectores a matrices: una colección de vectores apilados en filas y columnas. En ML seguimos una convención fundamental: filas son observaciones (usuarios, casas, pacientes) y columnas son características (edad, precio, altura). Por eso, el shape se lee como (observaciones, características), justo lo que esperan librerías como Scikit-learn.
- Ejemplo Netflix: una matriz de calificaciones con usuarios en filas y películas en columnas.
ndim = 2: hay filas y columnas.shape = (4, 4): 4 observaciones por 4 características.size = 16: total de elementos.
calificaciones = np.array([
[5, 1, 2, 0],
[3, 2, 5, 1],
[3, 2, 4, 5],
[4, 4, 2, 2],
])
print(f"ndim: {calificaciones.ndim}") # 2
print(f"shape: {calificaciones.shape}") # (4, 4)
print(f"size: {calificaciones.size}") # 16
¿Cómo indexar filas y columnas con slicing?
Selecciona una fila con índice. Selecciona una columna con : en filas y el índice de la columna.
# primera fila (usuario 1)
usuario_1 = calificaciones[0]
print(f"usuario 1: {usuario_1}")
# tercera columna (película 3)
pelicula_3 = calificaciones[:, 2]
print(f"pelicula 3: {pelicula_3}")
¿Qué es un tensor y cómo visualizarlo?
Una imagen a color tiene alto, ancho y profundidad de color. Para esto usamos un tensor: generaliza la matriz a tres o más dimensiones. Si un vector es 1D y una matriz 2D en NumPy, un tensor es 3D o más. Son el lenguaje nativo del deep learning (Tensorflow, Pytorch).
- Un píxel RGB combina tres canales: R (red), G (green) y B (blue), con valores de 0 a 255.
- Ejemplo: tensor con forma que se interpreta como “número de matrices internas, filas y columnas”.
ndim = 3,shapecon tres números ysizecomo su multiplicación.
import numpy as np
import matplotlib.pyplot as plt
imagen_tensor = np.array([
[[255, 0, 0], [ 0, 255, 0], [ 0, 0, 255]],
[[125, 100, 40], [115, 80, 200], [ 30, 60, 90]],
])
print(f"ndim: {imagen_tensor.ndim}")
print(f"shape: {imagen_tensor.shape}")
print(f"size: {imagen_tensor.size}")
plt.imshow(imagen_tensor)
plt.title('imagen tensor')
plt.axis('off')
plt.show()
Te invito a comentar: comparte una matriz que crearías a partir de un problema real indicando qué representan sus filas y columnas, y si te animas, publica también la imagen que generes con tu tensor RGB