🧮 Producto matriz-vector e inferencia en NumPy
🔑 CONCEPTOS CLAVE (visión rápida)
🔹 Producto punto → Combina dos vectores → Mide alineación / similitud
🔹 Inferencia / predicción → Aplicar pesos aprendidos a datos no vistos
🔹 Producto matriz-vector → Muchos productos punto a la vez → Cálculo eficiente y escalable
🔹 Compatibilidad de dimensiones → Columnas de la primera = filas de la segunda
🔹 Vector fila vs. vector columna → Si no encajan ➜ se transpone
📐 REGLA DE ORO DE LAS DIMENSIONES
✔ Para que la multiplicación funcione:
(m, n) @ (n, 1) → (m, 1)
❌ Si los números del centro no coinciden → error
🛑 Error típico: intentar multiplicar una matriz por un vector fila
🔄 TRANSPOSICIÓN .T EN NUMPY
🔁 ¿Qué hace? → Cambia filas por columnas
🛠 ¿Para qué sirve? → Corrige incompatibilidades de dimensiones
📌 Ejemplos rápidos:
· 3,2 ➜ 2,3
· 1,5 ➜ 5,1
✍️ En NumPy se escribe: .T
🧪 EJEMPLO PRÁCTICO (modelo simple)
📊 DATOS DE ENTRADA X
👨🎓 Cada fila = un estudiante 📚 Característica 1: horas de estudio 😴 Característica 2: horas de sueño
X = [[10, 8],
[ 5, 7],
[12, 4]]
📏 Forma: 3,2
⚖️ PESOS DEL MODELO W
🎚 Pesos iniciales:
W = [0.6, 0.4]
📏 Forma: 1,2 ❌ ➡️ No compatible con X
🔁 AJUSTE CON TRANSPOSICIÓN
W_columna = W.T
📏 Nueva forma: 2,1 ✅ 🎯 Ahora sí se puede multiplicar
En este caso se expresó de manera acertiva para la clase al vector w como un vector fila de la manera:
w_fila=np.array([[0.6,0.4]])
Esto nos permite diferenciarlo de los vectores columnas:
w_columna=np.array([[0.6], [0.4]])
Para así poder explicar los requisitos que deben tener las formas (shape) de los arreglos al momento de realizar el producto punto. Sin embargo, la manera más dinámica de expresar los vectores es como vector unidemsional mediante una lista simple:
w=np.array([0.6,0.4])
Ya que al momento de multiplicarlos no se necesita transponerlos para cumplir con los requisitos. Numpy y Python hace el trabajo automáticamente. Por supuesto, es necesario tener claro la teoría de Algebra Lineal.
El primer estudiante sigue siendo aquel con mejor calificación a pesar del cambio. Al dar más importancia a las horas de sueño, el tercer y segundo estudiante tendrían la misma calificación.
Gran respuesta!
Por que el vecto w_fila = np.array([[0.6,0.4]]) se pone en dos corchetes cuadrados y despues se traspone, no seria mas facil solamente poner unos corchetes cuadrados y hacer la multipliacion? nos da el mismo resultado
RESPUESTA:
Si usas un solo corchete [0.6, 0.4], NumPy crea un arreglo unidimensional con forma (2,) que no es ni fila ni columna. Eso puede salvarte temporalmente con algunos operadores, pero rompe la consistencia matemática.
Definirlo como matriz de dos dimensiones [[0.6, 0.4]] (forma 1,2) y transponerlo deja explícito que es un vector columna 2,1, alineándose perfectamente con las reglas estrictas de multiplicación de matrices. ¿Tiene sentido esa distinción de formas, o probamos qué pasa con las dimensiones?
Buenas tardes,
Esta es mi propuesta para el ejercicio planteado de clase.
Dando como resultado las siguientes notas:
Como el modelo prioriza las horas de sueño a las horas de estudio, incluso si los estudiantes estudian menos, si duermen más tendrán mejores notas. Muchas gracias.
El producto matriz-vector es la operación clave para realizar inferencia en machine learning, ya que permite aplicar los pesos de un modelo a múltiples datos de entrada de forma simultánea. Cada fila de la matriz de datos representa una observación, y al multiplicarla por el vector de pesos se obtiene una predicción. Esta operación encapsula múltiples productos punto en paralelo, lo que la hace eficiente y escalable.
Para que la multiplicación funcione, es fundamental verificar la compatibilidad de dimensiones: el número de columnas de la matriz debe coincidir con el número de filas del vector. En caso de desajuste, se utiliza la transposición (.T) para convertir un vector fila en columna. Con herramientas como NumPy, esta operación se implementa fácilmente usando el operador @, permitiendo generar predicciones de manera rápida y entender cómo los cambios en los pesos afectan los resultados del modelo.
Reto: cambiar las caracteristicas de horas de estudio y sueño para tres estudiantes y obtener su predicción de rendimiento.
Gran solución! 😃
Esta pregunta en el examen podría tener mucho mejor contexto. Por ejemplo establacer primero el significado de cada lugar del array
Muchas gracias por tu comentario, lo tomaremos en cuenta para mejorar la pregunta.
El estudiante A, al parecer tiene mayor peso que el resto de estudiantes.
Así es, gran respuesta!
Hay alguna razón detras, para no usar w_fila = np.array([0.6, 0.4]) osea un shape de (2,) que tambien funciona, pero arroja predicciones con shape de (3,)
NumPy's 1D arrays of shape (2,) are shape-ambiguous—they lack a strict row or column orientation. While NumPy lets you get away with it via broadcasting, keeping explicit 2D shapes like (2, 1) prevents silent dimension bugs as your models grow and expect strict matrix contracts.
si cambian los resultados