Resumen

Aprende a pasar de los pesos aprendidos por un modelo a predicciones sobre muchos ejemplos con una sola operación: el producto matriz-vector en NumPy. Aquí verás por qué el producto punto es la base de la inferencia, cómo asegurar compatibilidad de dimensiones y cuándo usar la transposición (.T) para alinear un vector fila con una matriz de datos.

¿Por qué el producto matriz-vector es esencial para la inferencia?

Aplicar el conocimiento de un modelo significa usar su vector de pesos para calcular salidas sobre datos nuevos. En términos prácticos, cada fila de la matriz de datos se combina con los pesos mediante un producto punto, y los resultados se apilan formando un vector de predicciones. Esta es la operación central de modelos lineales y redes neuronales a escala.

  • Producto punto: mide similitud o alineación entre dos vectores.
  • Inferencia o predicción: aplicar los weights del modelo a datos no vistos.
  • Producto matriz-vector: empaqueta muchos productos punto en paralelo.
  • Compatibilidad de dimensiones: columnas de la primera matriz = filas de la segunda.
  • Vector fila vs. vector columna: si llega como fila y no encaja, se gira con la transposición.

¿Qué hace la transposición .T en NumPy y por qué corrige dimensiones?

La transposición intercambia filas por columnas. En NumPy se escribe como .T y permite “girar” un vector o matriz para cumplir la regla de compatibilidad.

  • Ejemplo de forma: una matriz 3,2 pasa a 2,3 al transponerla.
  • Ejemplo de vector: un vector fila 1,5 pasa a vector columna 5,1.
  • Regla clave: columnas de la primera = filas de la segunda para poder multiplicar.

¿Cómo implementarlo en Google Colab con NumPy paso a paso?

Se crea una matriz X de 3 filas y 2 columnas: cada fila es un estudiante, con dos características: horas de estudio y horas de sueño. El vector de pesos W llega como vector fila (1,2), así que se transpone a vector columna (2,1) y luego se aplica el operador @ para el producto matriz-vector.

import numpy as np

# datos: [horas_estudio, horas_sueño]
X = np.array([[10, 8],
              [ 5, 7],
              [12, 4]])

# pesos del modelo como vector fila
W_fila = np.array([[0.6, 0.4]])

print(f"forma de X: {X.shape}")
print(f"forma de W_fila: {W_fila.shape}")

# transponer para obtener vector columna compatible
W_columna = W_fila.T
print(f"forma de W_columna: {W_columna.shape}")

# producto matriz-vector
predicciones = X @ W_columna
print("predicciones del rendimiento de estudiantes:", predicciones.ravel())
print("forma de predicciones:", predicciones.shape)
  • Se verifica la shape de X: 3,2.
  • Se verifica la shape de W_fila: 1,2 (no compatible para X @ W_fila).
  • Se usa la transposición: W_columna = W_fila.T con shape 2,1.
  • Se calcula X @ W_columna y se obtiene una salida 3,1.
  • Con X = [[10,8],[5,7],[12,4]] y W = [0.6, 0.4], las predicciones son: 9.2, 5.8, 8.8.

¿Cómo experimentar cambiando los pesos para ver el efecto?

La salida representa el “rendimiento” estimado en una escala de 1 a 10. Cambiar los pesos reequilibra la importancia de cada característica.

# da más importancia a horas de sueño
W_fila = np.array([[0.3, 0.7]])
W_columna = W_fila.T
predicciones = X @ W_columna
print("nuevas predicciones:", predicciones.ravel())
  • Ajusta los pesos y vuelve a ejecutar.
  • Observa qué estudiante obtiene el valor más alto (mejor sobre diez).
  • Relaciona los cambios con la importancia asignada a cada característica.

¿Qué habilidades y conceptos aplicas para modelos lineales?

Dominas la ruta de datos a predicciones usando operaciones básicas que escalan.

  • Entender el producto punto como base de la similitud y la predicción.
  • Ejecutar un producto matriz-vector para obtener muchas predicciones a la vez.
  • Verificar y alinear dimensiones con la transposición (.T).
  • Diferenciar vector fila (1,n) y vector columna (n,1) en NumPy.
  • Usar el operador @ y print para inspeccionar resultados.
  • Trabajar con arrays y la propiedad shape para depurar.

¿Probaste a modificar los pesos y comparar resultados? Cuéntame en los comentarios qué patrón observaste y cuál estudiante salió mejor valorado.