Implementación de la Transformación de Matrices en Python
Resolución de un sistema lineal
Definimos un sistema de ecuaciones:
2x+y=5x−y=1Esto se reescribe como:
123456789import 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)
Esto encuentra los valores de x y y 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 x por 2 y se comprime y por 0.5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Esto realiza:
S⋅v=[2000.5][23]=[41.5]Rotación
Se rota el vector 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:
R⋅v=[01−10][23]=[−32]Visualización de las transformaciones
Utilizando matplotlib
, se grafica cada vector desde el origen, con sus coordenadas etiquetadas:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import 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()
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.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 1.96
Implementació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=5x−y=1Esto se reescribe como:
123456789import 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)
Esto encuentra los valores de x y y 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 x por 2 y se comprime y por 0.5:
S = np.array([[2, 0],
[0, 0.5]])
scaled_v = S @ v
Esto realiza:
S⋅v=[2000.5][23]=[41.5]Rotación
Se rota el vector 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:
R⋅v=[01−10][23]=[−32]Visualización de las transformaciones
Utilizando matplotlib
, se grafica cada vector desde el origen, con sus coordenadas etiquetadas:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import 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()
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.
¡Gracias por tus comentarios!