Si los vectores son puntos en un mapa, las matrices son el mapa completo: una matriz es una cuadrícula de números organizada en filas y columnas. Puedes pensarla como un conjunto de vectores fila o vectores columna, dependiendo del caso.
Matemáticamente, se escribe como un conjunto rectangular o cuadrado de números. Cada número dentro de la matriz se llama elemento, y se identifica por su posición: \(a_{ij}\) es el elemento que está en la fila i y la columna j.
Para poder multiplicar dos matrices es necesario que el número de columnas de la primera matriz sea igual al número de filas de la segunda. Para realizar la multiplicación se multiplican los elementos de cada fila de A por cada elemento de las columnas de B y se suman los resultados.
Propiedad .shape: conocer las dimensiones de la matriz
print(A.shape)
(3, 4)
Indexación: acceder a elementos, fila y columnas
M = np.array([[1, 2, 3], [4, 5, 6] [7, 8, 9]])valor = M[4, 5] # valor en la fila 5, columna 6 (Python indexa desde 0)fila = M[1, :] # acceder a una fila completacolumna = M[:, 2] # acceder a una columna completaprint(valor)print(fila)print(columna)
6[4 5 6][3 6 9]
Suma y resta de matrices
C = A + BD = B - A
Multiplicación por escalar
E = 3 * A
Producto de matrices
C = A @ B# tambien se puede usar:np.dot(A, B)
Transpuesta de una matriz
print("A^T =\n", A.T)
Matriz identidad
I = np.eye(2)print("Matriz identidad:\n", I)print("A @ I =\n", A @ I)
Determinante y matriz inversa
det_A = np.linalg.det(A)inv_A = np.linalg.inv(A)
6. En resumen
Las matrices son la base del álgebra lineal y de los modelos de datos.
En Machine Learning, cada conjunto de entrenamiento es una gran matriz.
En visión por computador, las imágenes son matrices.
En análisis estadístico, las transformaciones de los datos se hacen con multiplicaciones matriciales.
Por eso, entender cómo funcionan es esencial: todo modelo, por complejo que parezca, se reduce a operaciones con vectores y matrices.
Imagina que los datos son como puntos en un mapa. Un vector es la flecha que describe dónde está ese punto y cómo llegar a él. En data science, los vectores son la forma más básica y poderosa de representar datos, desde características de un cliente hasta píxeles en una imagen.
El vector es el elemento fundamental y raíz de toda el algebra lineal.
Los vectores no son solo un concepto matemático para escribir ecuaciones de forma concisa. También son herramientas fundamentales para codificar información compleja, desde posiciones y velocidades hasta fuerzas y movimientos en varias dimensiones.
¿Qué es un vector?
Más allá de ser una lista ordenada de números, un vector puede pensarse como: cualquier cosa que tenga una dirección y una magnitud.
Es una lista ordenada de números que describe una posición o característica en un espacio. En data science, cada vector representa un punto de datos y cada fila de tu dataset es un vector.
Esta definición es la que usan los físicos. Por ejemplo:
Dirección: hacia dónde apunta el vector.
Magnitud: qué tan grande es, también llamada norma del vector.
Ejemplos
Supongamos que describes a una persona por su edad y salario:
Vector: \([25, 50000]\)
25: Edad (en años)
50000: Salario (en euros)
Visualmente:
Un vector es una flecha en un plano:
Origen: \((0,0)\)
Punta: \((25, 50000)\)
En 2D, se ve como una línea desde el origen al punto.
Dimensiones
2D: \([x, y]\) (ej: edad, salario)
3D: \([x, y, z]\) (ej: edad, salario, experiencia)
n-D: \([x₁, x₂, …, xₙ]\) (datasets con muchas columnas)
De la Ecuación al Movimiento
Imaginemos una pelota lanzada desde el origen que en términos de vectores seria la posición \((0,0)\) en un espacio bidimensional. La posición de la pelota en cada instante se puede codificar como un vector \( \mathbf{p} = (p_1, p_2) \), donde:
\(p_1 = 5\) representa la posición horizontal \(x\)
\(p_2 = 4\) representa la posición vertical \(y\).
Así, en lugar de seguir las coordenadas de los ejes por separado, podemos usar un solo vector para describir la posición de la pelota.
$$ \vec{p} = \begin{bmatrix}5\\4\end{bmatrix}$$
Si representamos \(\vec{p}\) en un plano cartesiano, se vería como una flecha que parte del origen (0,0) y termina en (5,4). La flecha tiene una dirección (hacia dónde apunta) y una longitud, que nos dice qué tan lejos está el punto final del origen. Para graficar podemos utilizar ax.arrow() en Matplotlib.
Código de la grafica
Código en Python Matplotlib
import matplotlib.pyplot as plt# Crear figura y ejesfig, ax = plt.subplots(figsize=(8, 8))# Dibujar el vector desde (0,0) hasta (5,4)ax.arrow(0, 0, 5, 4, head_width=0.3, head_length=0.4, fc='blue', ec='blue', linewidth=2)# Marcar el punto final del vectorax.plot(5, 4, 'o', markersize=6, color='blue')ax.plot(0, 0, 'o', markersize=6, color='blue')ax.text(5.6, 4, r"$\vec{v} = [5,\, 4]$", fontsize=14, color='blue')# Ejes centradosax.spines['left'].set_position('zero')ax.spines['bottom'].set_position('zero')# Quitar bordes superior y derechoax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)# Color y grosor de los ejesfor spine in ['left', 'bottom']: ax.spines[spine].set_color('gray') ax.spines[spine].set_linewidth(1)# Límites y cuadrículaax.set_xlim(-6, 8)ax.set_ylim(-6, 8)ax.grid(False)# Tamaño de los números de los ejesax.tick_params(axis='both', which='major', labelsize=10)# Etiquetas y títuloax.set_xlabel(r"$x$", fontsize=14, loc="right")ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)ax.set_title("Vector", pad=20)# Guardar y mostrarplt.savefig("vector.png", transparent=True, dpi=300)plt.show()
La norma (longitud del vector): cuánto ha viajado la pelota
Esa longitud, también llamada norma, nos dice qué tan grande es el vector. Se denota con dos barras verticales, así: \( ||\mathbf{p}|| \) Para saber qué tan lejos está la pelota desde el origen, usamos la norma del vector:
$$||\mathbf{p}|| = \sqrt{p_1^2 + p_2^2}$$
Esta ecuación se deriva directamente del teorema de Pitágoras: la hipotenusa de un triángulo rectángulo es la raíz cuadrada de la suma de los cuadrados de sus catetos. Por ejemplo, si \(p_1 = 5\) y \(p_2 = 4\), la norma es:
Esto hace que los vectores sean muy poderosos para manejar información compleja de manera compacta.
Aplicaciones de los vectores en física
Los vectores nos permiten representar de manera eficiente:
Posición: dónde se encuentra un objeto.
Velocidad: dirección y rapidez del movimiento.
Fuerza: hacia dónde actúa y cuán intensa es.
Además, con operaciones como suma, resta, multiplicación por escalar o producto punto, podemos combinar vectores y calcular efectos resultantes de manera simple.
Por ejemplo, en nuestra pelota de béisbol, un vector nos permite:
Conocer simultáneamente su posición en \(x\) y \( y\) ,
Medir su distancia desde el punto de lanzamiento con la norma,
Y si quisiéramos incluir velocidad o aceleración, usar vectores de mayor dimensión para mantener todo compacto y manejable.
Dos propiedades clave de un vector
Dirección: hacia dónde apunta.
Magnitud: cuán grande es, calculable con la norma.
En cualquier número de dimensiones, esta regla sigue siendo válida, lo que convierte a los vectores en herramientas universales para describir información física y multidimensional.
Operaciones con Vectores
Los vectores son poderosos porque puedes operarlos para descubrir patrones. Aquí las operaciones más importantes:
Esto es útil porque cuando sumamos vectores estamos combinando información de manera ordenada, igual que antes combinábamos cantidades de manzanas, naranjas y pan. La suma de vectores es la primera forma de “agrupar información” en un vector.
Multiplicación por escalar
Si tenemos un número \(k\) y un vector \(\vec{v}\), multiplicamos cada componente por ese número:
$$ k \cdot \vec{v}= k \cdot \begin{bmatrix}v_1\\v_2\\v_3\end{bmatrix} = \begin{bmatrix}kv_1\\kv_2\\kv_3\end{bmatrix}$$
Esto sirve para escalar vectores, como cuando queremos “duplicar” o “reducir” una cantidad.
Producto Escalar (Dot Product)
Dot Product: Mide la similitud entre dos vectores.
El producto escalar es una operación entre dos vectores que produce un número, a diferencia de la suma o resta de vectores, que produce otro vector.
Antes de hablar de matrices, hay una idea fundamental. Una ecuación lineal es un producto escalar.
ones
En resumen:
Una ecuación lineal = producto escalar
Un sistema = varios productos escalares
Una matriz = colección de vectores fila
Multiplicar matriz por vector = aplicar todos los productos escalares
Usos del producto escalar en data science
Similitud de vectores (cosine similarity): En NLP, sistemas de recomendación o embeddings de palabras. Cuanto mayor sea este valor, más similares son los vectores.
Regresión lineal / Neuronas : Calcula la combinación lineal de las variables
Similitud del coseno : Mide cuánto se parecen dos vectores
PCA / Proyecciones : Proyecta un vector sobre una dirección
Distancias : Base para métricas vectoriales
Álgebra de matrices : Operación elemental en multiplicación de matrices
Operaciones de vectores con Python
Los vectores en Python se manejan con Numpy y se representan como listas:
¿Por qué las ecuaciones lineales son clave en data science?
Las ecuaciones lineales y los sistemas lineales son como el esqueleto de la data science. Son la base de algoritmos como la regresión lineal, los sistemas de recomendación y el análisis de datos en general. Imagina que cada punto de datos es una pieza de un rompecabezas: las ecuaciones lineales te ayudan a juntar las piezas para descubrir patrones.
“Sin ecuaciones lineales, no habría machine learning moderno. Son el primer paso para transformar datos en decisiones.”
¿Qué es una ecuación lineal?
Una ecuación lineal es una ecuación donde las variables están elevadas a la potencia 1 y multiplicadas por un coeficiente (no hay cuadrados ni raíces) y se combinan con sumas o restas.
Ejemplo Simple
$$3x + 2y = 30$$
Como concepto está bien. ¿Pero cuál es el sentido de esto? ¿De dónde sale? La idea base de la ecuación lineal es una relación constante entre dos cosas. La ecuación lineal nace cuando dos magnitudes cambian de forma proporcional.
Por ejemplo:
Si vendes café a 2€ cada uno, el ingreso total depende linealmente del número de cafés vendidos.
$$Ingreso = 2 \times \text{Número de cafés}$$
Esto puede escribirse matemáticamente como
$$y = 2x$$
Donde:
x, y: Variables (Ingreso, Café).
2: Coeficientes (pesos de las variables)
Esa es una relación lineal: cada vez que \(x\) aumenta 1, \(y\) aumenta 2. La tasa de cambio es constante. Visualmente esta ecuación representa una línea recta en un plano. Cada solución \((x, y)\) es un punto en esa línea.
De ahí el nombre de lineal, porque describe una relación que se representa como una línea recta en un gráfico. Las ecuaciones lineales modelan situaciones donde:
El cambio es constante,
La relación entre variables es directa o proporcional.
Por eso son la base de la modelización matemática, antes de llegar a modelos más complejos, todo empieza por asumir una relación lineal.
Representar las ecuaciones
En la forma general o modelo pendiente e intersección, toda ecuación lineal puede escribirse así:
$$y=mx+b$$
Donde:
\(b\) –> es el valor inicial o intersección con el eje Y: el valor de \(y\) cuando \(x=0\).
\(y\) –> valor en el eje vertical (dependiente)
\(x\) –> valor en el eje horizontal (independiente)
\(m\) –> es la pendiente, cuánto cambia \(y\) cuando \(x\) aumenta una unidad.
Si \(m > 0\) –> sube hacia la derecha (creciente)
Si \(m < 0\) –> baja hacia la derecha (decreciente)
Si \(m = 0\) –> la recta es horizontal
Código de la gráfica
Código Python con Matplotlib
import matplotlib.pyplot as pltfig, ax = plt.subplots(figsize=(8,8))ax.axline((0, 1), slope=2, color="red", linewidth=1, label="Creciente")ax.axline((0, -1), slope=-3, color="green", linewidth=1, label="Decreciente")ax.axline((0, 3), slope=0, color="blue",linewidth=1, label="Horizontal")# Ejes en el centroax.spines['left'].set_position('zero') # eje Y en x=0ax.spines['bottom'].set_position('zero') # eje X en y=0# Quitar bordes superior y derechoax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)# Cambiar color y grosor de los ejes (spines)for spine in ['left', 'bottom']: ax.spines[spine].set_color('black') ax.spines[spine].set_linewidth(2)# Límites y cuadrículaax.set_xlim(-10, 10)ax.set_ylim(-10, 10)# tamaño de los numerosax.tick_params(axis='both', which='major', labelsize=10)# Etiquetas y leyendaax.set_xlabel(r"$x$", fontsize=14, loc="right")ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)ax.legend()ax.set_title("Tipos de pendientes", pad=20)ax.legend(facecolor='none', edgecolor='none')ax.grid(False)plt.savefig("pendientes.png", transparent=True, dpi=300)plt.show()
¿Por qué las pendientes siempre avanzan a la derecha?
Esto tiene que ver con cómo definimos el sistema de coordenadas cartesianas y el concepto de pendiente. Vamos a desglosarlo paso a paso:
La pendiente mide cuánto cambia \(y\) cuando \(x\) cambia una unidad.
Cuando calculamos la pendiente avanzamos de izquierda a derecha en el eje \(x\).
Entonces la pendiente se interpreta como el cambio vertical que ocurre al movernos a la derecha.
Por eso, al dibujar la recta, decimos que “avanza a la derecha” y sube o baja según \(x\).
Si quisieras avanzar a la izquierda, sería simplemente \(x<0\) y la pendiente seguiría siendo la misma, solo que la “mirada” sería desde el otro extremo.
En otras palabras: no es que la recta no exista hacia la izquierda, sino que matemáticamente la pendiente se mide tomando \(Δx\) (variación de x) positivo, lo que corresponde a moverse hacia la derecha.
El sentido algebraico: equilibrio
Desde el punto de vista algebraico, una ecuación es una igualdad entre dos expresiones que mantiene un equilibrio. Una ecuación lineal representa un equilibrio simple, sin potencias ni productos entre variables:
$$2x+3y=30$$
Significa que existen valores de \(x\)y\(y\) para los cuales la expresión de la izquierda \(2x+3y\)) tiene el mismo valor que el número de la derecha (30).
Cada punto \((x,y)\) que cumple esa igualdad está en equilibrio: pertenece a la recta.
Ambos lados deben ser iguales para que la ecuación se cumpla.
Una ecuación representa una condición de equilibrio o una restricción sobre los valores posibles de las variables.
Desde el punto de vista algebraico, lo que hacemos con una ecuación es buscar los valores de las variables que la hacen verdadera. A eso lo llamamos resolver la ecuación. En este caso: \(2x+3y=30\) no tiene una única solución, sino infinitas combinaciones de \((x,y)\) que cumplen la igualdad (todas las que están sobre la recta).
Si representamos todos los puntos \((x,y)\) que cumplen esa ecuación, obtenemos una recta en el plano cartesiano. Así, una ecuación lineal de dos variables es la expresión algebraica de una recta.
Ejemplo: Ecuación lineal de las frutas
Un problema clásico seria resolver cuantas manzanas y naranjas podemos comprar con 30€, donde las manzanas tienen un precio de 2€ y las naranjas de 3€. (Supón que puedes fraccionar las frutas).
Este problema se resuelve con un ecuación lineal que se representa como sigue:
$$2x + 3y = 30$$
Donde:
2 y 3 –> son los coeficientes (precios de las frutas)
\(x\)–> variable que representa las manzanas
\(y\) –> variable que representa las naranjas
30 –> es el termino independiente (la constante)
Representamos la ecuación en la forma general \(y=mx+b\):
$$3y = -2x + 30$$
Pasamos el 3 dividiendo y calculamos:
$$y = \frac{2}{3}x – \frac{30}{3}$$
$$y = -\frac{2}{3}x + 10$$
Aquí tenemos:
\(m = – \frac{2}{3}\) –> pendiente de la recta.
\(b = 10\) –> la ordenada en el origen, o sea el punto donde la recta corta el eje Y.
Cuando \(x=0\): \(y=10\) –> la recta pasa por el punto \((0, 10)\).
Cuando \(y=0\): \(x=15\) → la recta pasa por el punto (15, 0):
$$2x + 3y = 30$$
$$2x + 3(0) = 30$$
$$2x = 30$$
$$2x = \frac{30}{2}$$
$$x = 15$$
Entonces tenemos ya dos puntos \((0,10)\) y \((15,0)\). Con estos dos puntos podemos trazar una recta que representa la ecuación. Cada punto en la recta, es una combinación de manzanas(\(x\)) y naranjas (\(y\)) que equivalen a una compra de 30€.
Podemos calcular mas combinaciones de frutas posibles eligiendo los valores de \(x\) y calculando \(y\) en la ecuación de la forma pendiente – intersección.
Por ejemplo, si \(x = 6\):
$$y = – \frac{2}{3}x + 10$$
$$y = – \frac{2}{3}(6) + 10$$
$$y = – \frac{12}{3} + 10$$
$$y = – 4 + 10 = 6$$
Otra combinación de frutas y punto en la grafica seria \((6,6)\). Representemos gráficamente la ecuación.
Código de la gráfica
Código Python de Matplotlib
import matplotlib.pyplot as pltfig, ax = plt.subplots(figsize=(8,8))ax.axline((0, 10), slope=-2/3, color="red", linewidth=2, label=r"$y = -\frac{2}{3}x + 10$")# Puntos específicospuntos = [(15,0), (0,10), (6,6)]for x, y in puntos: ax.plot(x, y, 'ko', markersize=6) # dibujar punto ax.text(x + 0.5, y + 0.5, f"({x},{y})", fontsize=10, color='black')# Ejes en el centroax.spines['left'].set_position('zero') # eje Y en x=0ax.spines['bottom'].set_position('zero') # eje X en y=0# Quitar bordes superior y derechoax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)# Cambiar color y grosor de los ejes (spines)for spine in ['left', 'bottom']: ax.spines[spine].set_color('black') ax.spines[spine].set_linewidth(2)# Límites y cuadrículaax.set_xlim(-20, 20)ax.set_ylim(-20, 20)# tamaño de los numerosax.tick_params(axis='both', which='major', labelsize=10)# Etiquetas y leyendaax.set_xlabel(r"$x$", fontsize=14, loc="right")ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)ax.legend()ax.set_title("Grafica de la Ecuación", pad=20)ax.legend(facecolor='none', edgecolor='none')ax.grid(False)plt.savefig("ecuacion de las frutas.png", transparent=True, dpi=300)plt.show()
Este sencillo problema de manzanas y naranjas nos muestra cómo las ecuaciones lineales nos permiten modelar relaciones entre variables de manera clara y predecible. Cada punto en la recta representa una combinación posible que satisface la restricción del problema (gastar 30 €), y la pendiente nos indica cómo cambiaría una variable si ajustamos la otra.
En ciencia de datos y machine learning, este mismo concepto es fundamental: buscamos modelar relaciones entre variables para poder predecir, optimizar o tomar decisiones basadas en datos.
Sistemas Lineales
Un sistema lineal es un conjunto de ecuaciones lineales que resuelves juntas para encontrar valores que satisfagan todas.
Supongamos que a nuestro problema anterior le añadimos una condición. Supón ahora que además de gastar 30 €, queremos comprar exactamente 12 frutas en total. Esa nueva condición se traduce en otra ecuación:
$$x + y = 12$$
Ahora tenemos dos ecuaciones y dos incógnitas \((x, y)\).
$$\begin{cases} 2x + 3y = 30 \\ x + y = 12 \end{cases}$$
Aquí, cada ecuación representa una recta en el plano cartesiano. El punto donde ambas rectas se cruzan es la combinación de frutas que cumple las dos condiciones al mismo tiempo: gastar 30 € y comprar exactamente 12 frutas. Existen varios métodos de resolver los sistemas de ecuaciones.
$$\begin{cases} 2x + 3y = 30 \\ x + y = 12 \end{cases}$$
Seleccionamos la variable \(x\) para normalizar la primera ecuación dividiendo la ecuación entre el coeficiente de \(x\) que es 2. La segunda ecuación no lo necesita, si fuera el caso, se dividiría la segunda ecuación por el coeficiente de su variable \(x\).
$$x + 1.5 y = 15$$
$$x + y = 12$$
Restamos la ecuación 1 a la 2.
$$x + y = 12$$
$$x + 1.5 y = 15$$
\( x -x = 0 \)
\( 1y – 1.5y = 0.5y \)
\(12 – 15 = -3 \)
resultado:
$$-0.5y = – 3$$
$$y = – \frac{3}{0.5}$$
$$y = 6$$
Ahora sustituimos \(y\) en la segunda:
$$x + y = 12$$
$$x + 6 = 12$$
$$x = 12 – 6 = 6$$
Resultado: \(x=6,y=6\).
Con Matplotlib podemos graficar la recta solo con la pendiente y la intersección. En este caso para la segunda ecuación \(m = -1\) y \(b = 12\) .
Código del gráfico
Código Python de Matplotlib
import matplotlib.pyplot as pltfig, ax = plt.subplots(figsize=(8,8))ax.axline((0, 10), slope=-2/3, color="red", linewidth=2, label=r"$y = -\frac{2}{3}x + 10$")ax.axline((0, 12), slope=-1, color="blue", linewidth=2, label=r"$y = -x + 12$")# Puntos específicosax.plot(6, 6, 'ko', markersize=6) # dibujar puntoax.text(x + 0.5, y + 0.5, f"({6},{6})", fontsize=10, color='black')# Ejes en el centroax.spines['left'].set_position('zero') # eje Y en x=0ax.spines['bottom'].set_position('zero') # eje X en y=0# Quitar bordes superior y derechoax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)# Cambiar color y grosor de los ejes (spines)for spine in ['left', 'bottom']: ax.spines[spine].set_color('black') ax.spines[spine].set_linewidth(2)# Límites y cuadrículaax.set_xlim(-20, 20)ax.set_ylim(-20, 20)# tamaño de los numerosax.tick_params(axis='both', which='major', labelsize=10)# Etiquetas y leyendaax.set_xlabel(r"$x$", fontsize=14, loc="right")ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)ax.legend()ax.set_title("Grafica de la Ecuación", pad=20)ax.legend(facecolor='none', edgecolor='none')ax.grid(False)plt.savefig("sistemas_de_ecuaciones.png", transparent=True, dpi=300)plt.show()
Método 2: Matriz inversa
Determinar si la matriz \(A\) tiene inversa.
Aislar el vector de incógnitas \(\vec{x}\).
La forma de hacerlo no es dividiendo, porque no existe la división entre matrices, sino multiplicando por su inversa, denotada \(A^{-1}\).
La ecuación de matriz inversa:
$$\vec{x} = A^{-1} \vec{b}$$
Resolviendo el sistema
Para una matriz de dos ecuaciones como la del ejemplo:
$$A = \begin{bmatrix} d & b \\ c & a \end{bmatrix}$$
Determinar su inversa es:
$$A^{-1} = \frac{1}{ad – bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}$$
Hay algunas operaciones básicas que usaremos constantemente:
Transposición (Aᵗ) → cambia filas por columnas.
Multiplicación de matrices (A·B) → combina vectores o sistemas.
Determinante (det(A)) → indica si el sistema tiene solución única.
Matriz inversa (A⁻¹) → nos permite resolver sistemas como \(x=A−1bx = A^{-1} bx=A−1b\).
Estas herramientas son la base de muchos algoritmos modernos de machine learning y análisis de datos.
Forma de la matriz aumentada
La matriz aumentada es otra forma de representar un sistema de ecuaciones lineales, pero con un propósito muy concreto: resolverlo más fácilmente mediante operaciones por filas (como en el método de Gauss o Gauss-Jordan). Contiene toda la información numérica del sistema. Trabajar con ella evita reescribir las variables en cada paso.
La matriz aumentada junta la matriz de coeficientes \(A\) y el vector de términos independientes \(\vec{b}\) en una sola matriz separada por una línea vertical:
Esa barra vertical no tiene significado algebraico en sí, simplemente marca la frontera entre los coeficientes del sistema y los resultados.
Método 3: Eliminación Gaussiana
El objetivo de la eliminación es transformar esa matriz con operaciones por filas hasta una forma en la que las variables se lean directamente. Las operaciones permitidas (elementales por filas) son:
Intercambiar dos filas.
Multiplicar una fila por un escalar distinto de 0.
Sumar a una fila un múltiplo de otra fila.
Estas operaciones no cambian el conjunto de soluciones del sistema: son equivalencias algebraicas.
En esta parte normalmente queremos que el primer elemento de la primera fila (posición (1,1)) sea un buen pivote (idealmente 1 y no 0). En nuestro caso la fila 2 ya tiene un 1 en la columna 1, así que intercambiamos las filas para facilitar cálculos:
Operacion \(R_1 \leftrightarrow R_2\) (Row1 y Row2)
Paso 2 — Eliminar la variable \(x\) de las filas inferiores
Qué se hace: queremos que en la columna del pivote (columna 1) todos los elementos excepto el pivote sean 0. Si el pivote fuese 0 habría que intercambiar filas para evitar dividir por 0.
Elegimos multiplicar por 2 porque ese número es precisamente lo necesario para que, al restarlo, el coeficiente 2 de la fila 2 quede anulado \((2 − 2 = 0)\).
La generalización del sistema lineal en una matriz aumentada es muy importante porque los modelos lineales en ciencia de datos funcionan exactamente igual:
$$\vec{y} = A\vec{w} + \vec{ε}$$
donde:
\(A\) es la matriz de datos (cada fila una observación, cada columna una variable)
\(\vec{w}\) son los pesos o coeficientes del modelo (lo que queremos estimar),,
\(\vec{y}\) son los valores observados o predichos.
\(\vec{ε}\) representa los errores o diferencias entre la predicción y los datos reales.
Esa es exactamente la forma que adoptan los modelos lineales en ciencia de datos y machine learning.
Resolver el sistema equivale a encontrar los valores de \(\vec{w}\) que mejor explican o ajustan los datos. Por eso, las ecuaciones lineales y su resolución matricial son la base matemática de muchos algoritmos de Machine Learning.
Ecuaciones Lineales con Python
Python hace que resolver sistemas lineales sea fácil y rápido con NumPy. Vamos a hacerlo de forma didáctica, con el mismo ejemplo de las frutas (dos ecuaciones, dos incógnitas), y luego generalizamos a más variables.
Ve los artículos relacionados con las matrices en Python:
import numpy as np# Definimos la matriz de coeficientes y el vector de resultadosA = np.array([[2, 3], [1, 1]])b = np.array([30, 12])# Resolver el sistema A x = bx = np.linalg.solve(A, b)print("Solución (x, y):", x)
Solución (x, y): [6. 6.]
Comprobar el resultado:
# Verificamos A @ x = bprint("Comprobación:", A @ x)
Comprobación: [30. 12.]
Usando la inversa de la matriz (método alternativo)
Este método no se recomienda en práctica cuando hay muchas variables, porque calcular la inversa directamente es más costoso y menos estable numéricamente.
A_inv = np.linalg.inv(A)x_alt = A_inv @ bprint("Solución con A^-1:", x_alt)
Comprender los principios que sustentan el análisis y la inteligencia artificial
En el ecosistema actual de la Ciencia de Datos, donde confluyen la estadística, la programación y el conocimiento del dominio, las matemáticas ocupan un lugar central. Son el lenguaje que permite describir, modelar y comprender los fenómenos que los datos representan.
Sin una base matemática sólida, la práctica del análisis de datos corre el riesgo de reducirse a la mera aplicación mecánica de algoritmos, sin entender las razones detrás de sus resultados. Por el contrario, dominar los fundamentos matemáticos otorga al profesional la capacidad de interpretar, justificar y optimizar cada decisión analítica.
El papel de las matemáticas en la ciencia de datos
Las matemáticas no son un componente accesorio: constituyen el núcleo conceptual de la disciplina. Cada área del proceso analítico —desde la limpieza y representación de los datos hasta la modelización y evaluación de los resultados— se apoya en conceptos matemáticos esenciales:
El álgebra lineal estructura la información en forma de vectores y matrices, haciendo posible el procesamiento eficiente de grandes volúmenes de datos y el funcionamiento interno de algoritmos como la regresión o las redes neuronales.
El cálculo describe el cambio y la optimización; es la herramienta que permite ajustar los parámetros de un modelo hasta minimizar el error.
La probabilidad y la estadística ofrecen el marco teórico para inferir, predecir y tomar decisiones bajo incertidumbre.
La optimización formaliza la búsqueda de soluciones óptimas en espacios complejos, un principio fundamental en el aprendizaje automático.
La teoría de conjuntos y la lógica proporcionan el lenguaje formal para definir relaciones, categorías y condiciones sobre los datos.
En conjunto, estos campos no solo explican el “cómo” de los algoritmos, sino el “por qué” de su funcionamiento y sus limitaciones.
Objetivos de esta serie de artículos
Esta serie de artículos tiene como propósito presentar de forma estructurada y accesible los principales fundamentos matemáticos de la Ciencia de Datos, vinculando la teoría con su aplicación práctica. A lo largo de las próximas entregas abordaremos los siguientes ejes:
Álgebra lineal: el ABC de los datos
Piensa en álgebra lineal como el sistema de archivos de la data science. Organiza datos en vectores (filas) y matrices (tablas), que son la base de todos los algoritmos.
Edad
Salario
Experiencia
.
25
50.000
2
<– Vector 1
30
75.000
5
<– Vector 2
35
60.000
8
<– Vector 3
Algoritmos como regresión lineal, redes neuronales y PCA trabajan con matrices para encontrar patrones.
Aplicaciones Reales
Recomendaciones Netflix: Matrices de usuario-película
Reconocimiento facial: Vectores de píxeles convertidos en características
Google Maps: Cálculos matriciales para rutas óptimas
Cálculo: Encontrando el Mejor Camino
Imagina que quieres encontrar la mejor ruta desde tu casa al trabajo. El cálculo es como el GPS que evalúa cada posible camino y elige el más rápido. Derivadas, gradientes y métodos de descenso aplicados al aprendizaje automático.
En machine learning, el gradiente es como una brújula que te dice hacia dónde moverte para mejorar tu modelo y qué tan rápido moverte.
El Gradient Descent (descenso por gradiente) empieza con una suposición inicial, calcula el error y usa el gradiente para ajustar ligeramente los pesos hasta encontrar el mínimo error. Es como bajar una montaña con los ojos vendados, usando solo la pendiente del terreno para guiarte.
Probabilidad y estadística: el arte de interpretar datos
La estadística es como tener gafas especiales para ver patrones invisibles en tus datos. Te ayuda a responder: ¿Es real este patrón o solo casualidad?
Estadísticas descriptivas
Te describen tus datos —la media, la mediana, la varianza, la desviación estándar o los percentiles—, que permiten resumir y comprender la estructura esencial de la información, convirtiendo el caos de los datos brutos en conocimiento interpretable, proporcionando una base sólida para la exploración, la visualización y, finalmente, la inferencia estadística y el modelado predictivo.
A través de ellas podemos detectar patrones generales, identificar valores atípicos, evaluar la consistencia de las mediciones y establecer hipótesis iniciales antes de aplicar modelos más complejos.
Comprender las relaciones
Uno de los pilares de la estadística aplicada en Ciencia de Datos es la correlación, una medida que permite cuantificar la fuerza y dirección de la relación entre dos variables. Analizar la correlación no solo revela patrones ocultos en los datos, sino que orienta la formulación de hipótesis y la construcción de modelos predictivos.
Sin embargo, identificar una correlación no implica causalidad. Para determinar si una relación observada es estadísticamente significativa y no producto del azar, entran en juego las pruebas estadísticas.
Validar la evidencia
El valor p (p-value) mide hasta qué punto tu hallazgo podría deberse a la casualidad. Los intervalos de confianza, por su parte, definen el rango dentro del cual se espera que se encuentre el valor real del parámetro poblacional con una determinada probabilidad.
Ambos conceptos permiten evaluar la significancia estadística, es decir, si el efecto detectado es lo suficientemente consistente como para considerarse real y no fruto de la variabilidad muestral.
Historia real: En 2018, muchas empresas de tech descubrieron que sus “éxitos” en A/B testing eran solo ruido estadístico por no entender los p-values.
Análisis de Datos y Modelado Matemático: De la Teoría a la Aplicación
Finalmente, todos estos fundamentos convergen en la práctica del análisis de datos y el modelado matemático, donde las herramientas teóricas se integran para resolver problemas reales en contextos empresariales, científicos y sociales.
El análisis de datos implica no solo explorar y describir información, sino también formular modelos que representen fenómenos observables, desde la predicción de la demanda en una cadena hotelera hasta la detección de anomalías en sistemas financieros o medioambientales.
El modelado matemático convierte esas relaciones en expresiones cuantitativas, permitiendo simular escenarios, realizar proyecciones y evaluar decisiones estratégicas. Su poder radica en conectar el mundo abstracto de las ecuaciones con la realidad operativa de las organizaciones, donde cada decisión basada en datos puede traducirse en eficiencia, rentabilidad o innovación.
No necesitas ser un genio matemático. Solo curiosidad y ganas de entender cómo funcionan las cosas detrás de Python y TensorFlow.
¿Cómo las matemáticas se conectan con Python?
En la práctica moderna de la Ciencia de Datos, las matemáticas y Python forman una alianza inseparable. Mientras las matemáticas proporcionan el marco teórico para entender los algoritmos, Python ofrece las herramientas prácticas para implementarlos, visualizarlos y validarlos sobre datos reales.
Cada concepto matemático puede trasladarse directamente al código:
El álgebra lineal se materializa a través de librerías como NumPy, que permite trabajar con vectores, matrices y operaciones matriciales de forma eficiente.
El cálculo y la optimización se aplican en entornos como TensorFlow o PyTorch, donde los gradientes y derivadas se calculan automáticamente durante el entrenamiento de modelos.
La probabilidad y estadística se ponen en práctica mediante Pandas, SciPy o Statsmodels, facilitando desde el análisis exploratorio hasta las pruebas de hipótesis.
Python, por tanto, no reemplaza las matemáticas: las traduce en acción. Es el medio que permite pasar de la teoría a la experimentación, y de la experimentación al descubrimiento. Comprender las matemáticas detrás del código permite usar estas herramientas con criterio, interpretar correctamente los resultados y desarrollar soluciones más eficientes y explicables.
En resumen, mientras las matemáticas aportan el “por qué”, Python ofrece el “cómo”. Juntas conforman el lenguaje operativo de la Ciencia de Datos moderna.