Que onda, como es que esto es tan genial? osea es simplemente genial jajaja
Transformaciones lineales y descomposición de matrices
Lo que aprenderás sobre álgebra lineal aplicada
Podemos y debemos pensar a las matrices como transformaciones lineales
Autovalores y Autovectores
Cómo calcular los autovalores y autovectores
Descomposición de matrices
¿Cómo descompongo una matriz no cuadrada (SVD)?
Las tres transformaciones
Aplicación de las matrices D y V y U y su efecto en la transformación
¿Cómo interpretar los valores singulares?
Aplicaciones de SVD a una imagen
Una imagen es una matriz
Apliquemos la descomposición SVD a una imagen
Buscando la cantidad de valores singulares que nos sirvan
¿Qué es una pseudoinversa de Moore Penrose y cómo calcularla?
Usando la pseudo inversa para resolver un sistema sobredeterminando
Aplicando Álgebra Lineal: Análisis de Componentes Principales (PCA)
¿Qué es PCA?
Preparando el conjunto de imágenes para aplicar PCA
Apliquemos PCA a un conjunto de imágenes
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Sebastián Sosa
Aportes 34
Preguntas 4
Que onda, como es que esto es tan genial? osea es simplemente genial jajaja
Para generar una “animación” y ver la imagen con diferente número de valores singulares:
from IPython.display import clear_output
plt.figure()
for n in range(50):
plt.imshow(U[:,:n]@np.diag(D[:n])@V[:n,:], cmap='gray')
plt.title(f"SV's = {n}")
plt.show()
clear_output(wait=True)
Buenísima clase: el contenido y el mejor profesor!
Cadad vez esto me gusta mas
Excelente clase.
Simplemente alucinante
¿Podrían decirme porque es importante esta linea, por favor?
titulo = “valores singulares = %s” % i
Que genial! Les comparto este link, lo compartió un compañero en anteriores clases, por si no lo leyeron se los comparto aquí hace referencia al tema los valores singulares. Muy interesante.
Wow! Cuando finalmente el aprendizaje converge 😄
Simplemente alucinante, aquí podemos observar cómo aumenta la precisión a más Vectores Singulares Considerados
Si usan este código pueden ver el avance:
for i in range(len(D)):
image_reconstruction = np.matrix(U[:, :i])*np.diag(D[:i])*np.matrix(V[:i,:])
plt.imshow(image_reconstruction, cmap='gray')
title = '#Singular values %s' %i
plt.title(title)
plt.show()
La compresión de imágenes por medio de la descomposición SVD hace uso de que muy pocos de los valores singulares realmente están representando información, la mayoría de ellos apenas logran capturar un porcentaje muy pequeño de su varianza.
Ahora que vi para que puede llegar a servir voy a volver a ver el video de la teoría.
import numpy as np
import matplotlib.pyplot as plt
# Crear una matriz de ejemplo
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# Aplicar la descomposición SVD
U, s, Vt = np.linalg.svd(A)
# Matriz diagonal de valores singulares
S = np.diag(s)
# Reconstruir la matriz original
A_reconstructed = U.dot(S).dot(Vt)
# Imprimir los resultados
print("Matriz original:\n", A)
print("Matriz U:\n", U)
print("Matriz diagonal de valores singulares:\n", S)
print("Matriz V transpuesta:\n", Vt)
print("Matriz reconstruida:\n", A_reconstructed)
# Graficar los valores singulares
plt.plot(s, 'ro-')
plt.xlabel('Índice')
plt.ylabel('Valor singular')
plt.title('Valores singulares')
plt.show()
Maravillosa clase. Y el tema es muy interesante.
Pero que genial esto y como lo explica Sebastián 😍
ESTAS SON LAS CLASES QUE LE ENCANTAN A UNO Y LO MOTIVAN A NO DEJAR DE ESTUDIAR POR LO QUE UNO PUEDE APRENDER
Para ver mas clara la imagen, pueden hacer un ciclo for y subirlo de 5 en 5
for i in range(5,50, 5):
matriz_reconstruida = np.matrix(U[:, :i]) * np.diag(D[:i]) * np.matrix(V[:i, :])
plt.imshow(matriz_reconstruida, cmap='gray')
titulo = "Valores singulares = %s" %i
plt.title(titulo)
plt.show()
Amo poder darle un fin a todo lo que se estudia, esto es brutal.
Así se pueden probar varias cantidades de valores singulares:
num_vals = (1, 10, 21, 50)
for i, x in enumerate(num_vals):
computed_img = np.matrix(U[:, :x]) * np.diag(D[:x]) * np.matrix(V[:x, :])
plt.subplot(2, 2, i + 1)
plt.title('Image with {} singular value(s)'.format(x))
plt.imshow(computed_img, cmap='gray')
plt.tight_layout()
plt.show()
Me gustaría saber si con esto mismo, en lugar de verlo como compresión, podría aplicarse para mejorar la resolución de la imagen.
Creo que es muy interesante cuando vemos casos prácticos el uso de las matrices y los vectores en cosas reales
Que genialidad de clase !!
está increíble! … de verdad eso tiene una tremenda utilidad, porque permite hacer cálculos con muchos menos datos!.. será así como funciona la compresión de zip por ejemplo?
Excelente clase profe. Estamos en el punto donde la cabeza hace click y **une **lo puramente matematico con la aplicacion en la vida real y decis uhhhhh que piola bancarme tantas clases de matematica
Que buen estructurado esta este curso.
Me encanta cuando Sebastian plantea las dudas
Hola a todos! Aquí mi aporte. Si quieren ver cómo cambia la figura en una única grid, pueden utilizar este código. Les adjunto una captura del resultado.
# Visualizando el cambio en una sola imagen.
width=10
height=10
rows = 2
cols = 5
axes=[]
fig=plt.figure(figsize=(25, 8))
j = 1
for a in range(rows*cols):
i = j
axes.append( fig.add_subplot(rows, cols, a+1) )
image_reconstruction = np.matrix(U[:, :i])*np.diag(D[:i])*np.matrix(V[:i,:])
plt.imshow(image_reconstruction, cmap='gray')
title = '#Singular values %s' %i
plt.title(title)
j = (a + 1) * 3
plt.show()
Que genial!!
Que interesante!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?