Cálculo de Autovalores y Autovectores con NumPy en Python
Resumen
¿Cómo calcular autovalores y autovectores con Python?
Para aquellos interesados en profundizar en el álgebra lineal y su aplicación a través de la programación, comprender cómo calcular autovalores y autovectores es esencial. Python, con sus poderosas bibliotecas de cálculo, ofrece una manera eficiente de realizar estos cálculos. En este artículo, abordaremos cómo puedes usar la biblioteca NumPy para hallar autovalores y autovectores de una matriz dada.
¿Qué necesitamos para empezar?
Primero, asegúrate de tener instaladas las bibliotecas necesarias en tu entorno de programación. Las herramientas principales serán:
NumPy: Para cálculos numéricos.
Matplotlib: Para visualizar los vectores y su transformación gráfica.
¿Cómo definir y calcular con NumPy?
Comencemos por definir una matriz utilizando NumPy. Supongamos que quinemos encontrar los autovalores y autovectores de la matriz X:
import numpy as np
# Definición de la matriz XX = np.array([[3,2],[4,1]])
Para obtener los autovalores y autovectores, usaremos la función eig de NumPy:
autovalores, autovectores = np.linalg.eig(X)
¿Qué nos devuelven las funciones de NumPy?
La función np.linalg.eig() devuelve dos elementos:
Un arreglo con los autovalores de la matriz.
Una matriz con los autovectores asociados, donde cada columna representa un autovector.
Análisis visual de los autovectores
Para comprender mejor el resultado, podemos graficar los vectores utilizando Matplotlib. He aquí un ejemplo de cómo hacerlo:
import matplotlib.pyplot as plt
# Función para graficar vectores desde el origendefgraficar_vectores(vectores, colores): plt.figure() plt.axvline(x=0, color='grey', lw=1) plt.axhline(y=0, color='grey', lw=1)for i inrange(len(vectores)): plt.quiver(0,0, vectores[i][0], vectores[i][1], angles='xy', scale_units='xy', scale=1, color=colores[i]) plt.xlim(-4,4) plt.ylim(-4,4) plt.grid() plt.show()# Graficar los autovectoresgraficar_vectores(autovectores.T,['green','orange'])
¿Qué observar al visualizar?
Cuando visualizas los resultados, notarás que los autovectores que calcula NumPy son múltiples de los que podrías haber calculado manualmente. Esto es completamente válido en matemática, ya que lo que define a un autovector es su dirección, no su magnitud específica.
Importancia de los autovalores y autovectores
Los autovalores y autovectores son herramientas críticas en muchos campos de la ciencia e ingeniería, incluida la descomposición espectral, análisis de estabilidad y reducción dimensional (como en PCA). A pesar de que el proceso pueda parecer técnico, su comprensión y correcta implementación abre puertas a soluciones de problemas mucho más complejos.
Con este conocimiento, estás bien equipado para explorar y experimentar con la descomposición de matrices en Python. La práctica te ayudará a internalizar estos conceptos, así que te alentamos a continuar explorando y ampliando tus habilidades. ¡Sigue aprendiendo!
Los cursos de python con álgebra lineal y este tienen mucho potencial, y eso es por que este hombre es un muy bueno explicando, sin duda uno de los mejores profesores en platzi
Total me han gustado mucho
Sii es muy completo el profe
🤔🤔 Si toman el primer autovector que arrojó numpy, resulta que es ortogonal a los demas que calculamos 🤔🤔
eso que quiere decir?
julioalfredomachadoolivo quiere decir que forma un angulo de 90 grados con los otros vectores
np.linalg.eig(x) - Obtiene los autovalores y autovectores asociados
Los autovectores encontrados por numpy son un múltiplo del propuesto en el ejercicio. Los autovectores son los mismos, lo que varía es la amplitud o el sentido
"Los autovectores son los mismos. Pueden cambiar en amplitud o sentido, pero su dirección se mantiene"
El Eigen Vector se usa mucho en el análisis de redes sociales por medio de grafos. Este identifica la importancia de un nodo sobre la misma red.
Sin duda este curso y el de álgebra lineal con python son los mejor explicados, estoy muy agradecido por este curso, gracias profe no me despegó de sus clases
¿Cómo podemos calcular con las funciones de Python los autovectores y los autovalores?
# Importamos las bibliotecas%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
# Creamos una matrizX = np.array([[3,2],[4,1]])print(X)# Vemos la biblioteca para calcular los autovectores y autovalores de Numpyprint(np.linalg.eig(X))# Pedimos que muestre los autovaloresautovalores, autovectores = np.linalg.eig(X)print(autovalores)# Pedimos cual es el autovalor asociado a cada autovector print(autovectores[:,0])# Mostramos el autovector numero 1print(autovectores[:,1])# Importamos nuestra función para graficar. %run ".\\Funciones auxiliares\graficarVectores.ipynb"# Definamos un array v = np.array([[-1],[2]])# Calculamos la tranformacion con el calculo del producto interno Xv = X.dot(v)# Y lo comparamos con el autovector anterior v_np = autovectores[:,1]print(Xv)print(v_np)# Graficamos al que calculamos con el producto interno, el vector original y el que nos devolvió el método de NumpygraficarVectores([Xv.flatten(), v.flatten(), v_np], cols =['green','orange','blue'])plt.ylim(-4,2)plt.xlim(-7,3)
Conclusión:
Entonces, podemos ver que el autovector encontrado por Numpy es un múltiplo del autovector que nosotros propusimos. Eso quiere decir que los autovectores son lo mismo, solo que pueden variar en amplitud o en sentido, pero la dirección se mantiene. Si tenemos un autovector, menos ese autovector también es autovector.
gracias, sin estos comentarios estaria algo perdido
Que buen curso definitivamente uno de los mejores de esta carrera , excelente explicación .
Escribo esta respuesta que le di a un compañero porque es una pregunta frecuente y puede que sirva y servirá para varios:
Lo que sucede en la combinación lineal de una matriz con un vector es que se transforma el espacio, de ahí su nombre “transformación lineal”. Entonces, los ejes que conocemos como “x” e “y” se modifican y van a cambiar dependiendo de la matriz que esté describiendo ese espacio, en este caso, la matriz “x”. Lo que sucede con los autovectores es que son vectores que, durante la transformación del espacio, se mantienen en el subespacio generado por el vector “original” en el espacio “original”. No necesariamente todos los autovectores del nuevo espacio estan dentro del mismo subespacio generado, por eso, este otro vecto ortgonal es también un autovector que se mantiene en el subesapcio generado de otro vector "original".
Si nosotros quisiéramos averiguar cual es ese vector “original” tendríamos que tratar el problema como un sistema de ecuaciones lineales donde "x" e "y" son las incógnitas de ese vector. Les dejo acá la captura de como se podría solucionar en python.
Lo que pasa con el vector [[0.14142136] , [0.14142136]] es que al transformarse el espacio, se mantiene dentro de su subespacio generado escalándose en 5 (que es su autovalor o el lambda, como arroja la función de Eigenvalues de numpy).
Si este profe si sabe de lo que habla y lo hace con código . Genial !!
Disculpen compañeros. En la práctica ¿cómo podría interpretar ello, los autovalores y autovectores?. Gracias
Son elementos matemáticos de interés que usarás para otros cálculos matemáticos, de la misma forma esta pensada la diagonal de una matriz, su determinante, su inversa, etc... Están pensadas para aplicar cálculos con ellas y obtener resultados que buscamos.
Fácil:
En machine learning tendrás que analizar grandes, pero grandes datasets y con grandes puede ser con hasta millones de parámetros. Entonces habrá veces que tendrás que tendrás que reducir el número de variables de forma que pasemos a tener el mínimo número de nuevas variables y que representen a todas las antiguas variables de la forma más representativa posible. Esto por costos computacionales, principalmente, aunque hay muchas más razones.
Eso se puede hacer con el algoritmo PCA y estos son los pasos básicos del algoritmo PCA:
Los 5 pasos del proceso PCA:
Cargar los datos
Normalizarlos
Obtener los auto vectores y autovalores a partir de la matriz de covarianza
Seleccionar los auto vectores correspondientes a las componentes principales
Proyectar el dataset original sobre el nuevo espacio de dimensión < 4
Como podrás apreciar, es indispensable saber de auto vectores y autovalores para aplicar el algoritmo PCA y reducir la dimensionalidad, generando una muestra significativa de los datos.
Si, lo sé, el concepto por si solo no tiene aplicaciones practicas, pero, ¿para que sirve la suma por si sola?, para nada, ¿verdad? pero que pasa cuando la utilizas para contar unos conjuntos de manzanas para el mandado,¿usarías la suma, verdad? Bueno, pasa lo mismo con ese tipo de conceptos, por si solo no hacen sentido, pero en conjunto con otros factores y otras técnicas, si hacen mucho sentido.
Por si necesitan comprender un poco mejor los conceptos
Autovalores y Autovectores
Excelente lista
Cálculo de autovalores y autovectores en python
Usamos el método np.linalg,eig(<matriz>) que nos devuelve una tupla con los arreglos de autovalores y autovectores. Ejemplo:
autovalores, autovectores = no.linalg.eig(A)
Entonces los autovalores y autovectores son los que hacen que la matriz no tenga transformación lineal pero que cambie solo de magnitud y/o dirección pero no de sentido ??? Y si es así por que el primer vector obtenido por numpy (v_nopd = autovectores[:, 0] )(rojo) da perpendicular a los otros vectores ...Agradezco me puedan ayudar :D
Tengo la misma pregunta respecto al vector rojo :(
Recomiendo hacer al menos una vez los cálculos a mano para entender las matemáticas de fondo, al fin y al cabo al llamar a los comandos todo sale solo y arroja solo el resultado, de esa manera uno no entiende de donde salió