Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Implementación de la Transformación de Matrices en Python | Fundamentos de Álgebra Lineal
Matemáticas para Ciencia de Datos

bookImplementación de la Transformación de Matrices en Python

Resolución de un sistema lineal

Definimos un sistema de ecuaciones:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Esto se reescribe como:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Esto encuentra los valores de xx y yy que satisfacen ambas ecuaciones.

Importancia: la resolución de sistemas de ecuaciones es fundamental en ciencia de datos, desde el ajuste de modelos lineales hasta la resolución de restricciones de optimización.

Aplicación de transformaciones lineales

Definimos un vector:

v = np.array([[2], [3]])

Luego aplicamos dos transformaciones:

Escalado

Se estira xx por 2 y se comprime yy por 0.5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Esto realiza:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotación

Se rota el vector 90°90° en sentido antihorario utilizando la matriz de rotación:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Esto da como resultado:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualización de las transformaciones

Utilizando matplotlib, se grafica cada vector desde el origen, con sus coordenadas etiquetadas:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Por qué es importante: los flujos de trabajo en ciencia de datos suelen incluir transformaciones, por ejemplo:

  • Análisis de Componentes Principales: rota los datos;
  • Normalización de características: escala los ejes;
  • Reducción de dimensionalidad: proyecciones.

Al visualizar vectores y sus transformaciones, se observa cómo las matrices literalmente mueven y remodelan los datos en el espacio.

question mark

¿Cuál es la salida de esta operación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 1.96

bookImplementación de la Transformación de Matrices en Python

Desliza para mostrar el menú

Resolución de un sistema lineal

Definimos un sistema de ecuaciones:

2x+y=5xy=12x + y = 5 \\ x - y = 1

Esto se reescribe como:

123456789
import numpy as np A = np.array([[2, 1], # Coefficient matrix [1, -1]]) b = np.array([5, 1]) # Constants (RHS) x_solution = np.linalg.solve(A, b) print(x_solution)
copy

Esto encuentra los valores de xx y yy que satisfacen ambas ecuaciones.

Importancia: la resolución de sistemas de ecuaciones es fundamental en ciencia de datos, desde el ajuste de modelos lineales hasta la resolución de restricciones de optimización.

Aplicación de transformaciones lineales

Definimos un vector:

v = np.array([[2], [3]])

Luego aplicamos dos transformaciones:

Escalado

Se estira xx por 2 y se comprime yy por 0.5:

S = np.array([[2, 0],
              [0, 0.5]])

scaled_v = S @ v

Esto realiza:

Sv=[2000.5][23]=[41.5]S \cdot v = \begin{bmatrix} 2 & 0 \\ 0 & 0.5 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} 4 \\ 1.5 \end{bmatrix}

Rotación

Se rota el vector 90°90° en sentido antihorario utilizando la matriz de rotación:

theta = np.pi / 2
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])

rotated_v = R @ v

Esto da como resultado:

Rv=[0110][23]=[32]R \cdot v = \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 2 \\ 3 \end{bmatrix} = \begin{bmatrix} -3 \\ 2 \end{bmatrix}

Visualización de las transformaciones

Utilizando matplotlib, se grafica cada vector desde el origen, con sus coordenadas etiquetadas:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
import numpy as np import matplotlib.pyplot as plt # Define original vector v = np.array([[2], [3]]) # Scaling S = np.array([[2, 0], [0, 0.5]]) scaled_v = S @ v # Rotation theta = np.pi / 2 R = np.array([[np.cos(theta), -np.sin(theta)], [np.sin(theta), np.cos(theta)]]) rotated_v = R @ v # Vizualization origin = np.zeros(2) fig, ax = plt.subplots(figsize=(6, 6)) # Plot original ax.quiver(*origin, v[0], v[1], angles='xy', scale_units='xy', scale=1, color='blue', label='Original') # Plot scaled ax.quiver(*origin, scaled_v[0], scaled_v[1], angles='xy', scale_units='xy', scale=1, color='green', label='Scaled') # Plot rotated ax.quiver(*origin, rotated_v[0], rotated_v[1], angles='xy', scale_units='xy', scale=1, color='red', label='Rotated') # Label vector tips ax.text(v[0][0]+0.2, v[1][0]+0.2, "(2, 3)", color='blue') ax.text(scaled_v[0][0]+0.2, scaled_v[1][0]+0.2, "(4, 1.5)", color='green') ax.text(rotated_v[0][0]-0.6, rotated_v[1][0]+0.2, "(-3, 2)", color='red') # Draw coordinate axes ax.annotate("", xy=(5, 0), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.annotate("", xy=(0, 5), xytext=(0, 0), arrowprops=dict(arrowstyle="->", linewidth=1.5)) ax.text(5.2, 0, "X", fontsize=12) ax.text(0, 5.2, "Y", fontsize=12) ax.set_xlim(-5, 5) ax.set_ylim(-5, 5) ax.set_aspect('equal') ax.grid(True) ax.legend() plt.show()
copy

Por qué es importante: los flujos de trabajo en ciencia de datos suelen incluir transformaciones, por ejemplo:

  • Análisis de Componentes Principales: rota los datos;
  • Normalización de características: escala los ejes;
  • Reducción de dimensionalidad: proyecciones.

Al visualizar vectores y sus transformaciones, se observa cómo las matrices literalmente mueven y remodelan los datos en el espacio.

question mark

¿Cuál es la salida de esta operación?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 6
some-alt