No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Apliquemos PCA a un conjunto de imágenes

17/18
Recursos

Aportes 13

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Resumen de pasos fundamentales en la aplicación de PCA a un conjunto de imágenes:

  1. Definir el porcentaje de información a obtener y aplicar el método.
caras_pca = PCA(n_components = 0.5)  # 50% de información
caras_pca.fit(caras) # ejecutar PCA
  1. Mostrar el número de elementos necesarios
print(caras_pca.n_components_)
  1. Mostrar el resultado del procesamiento y evaluar
componentes = caras_pca.transform(caras)
proyeccion = caras_pca.inverse_transform(componentes)

fig, axes = plt.subplots(5, 10, figsize=(15, 8),
                       subplot_kw = {'xticks' : [], 'yticks':[]},
                        gridspec_kw = dict(hspace = 0.01, wspace = 0.01))

for i, ax in enumerate(axes.flat):
    ax.imshow(proyeccion[i].reshape(112,92), cmap = "gray")

Todo lo sacaron de este link, solo le cambiaron unos cuantos parametros, se supone que deben enseñar cosas que no se pueden encontrar facilmente.
Muy mal por parte de platzi.
Aqui el link:
https://medium.com/@sebastiannorena/pca-principal-components-analysis-applied-to-images-of-faces-d2fc2c083371

  • Únicamente con 44 componentes podemos recuperar el 80% de la información.

Interesante forma de utilizar PCA para imagenes. Tendré que repasar el curso, me gustó mucho

Alguien me explica, por favor, cómo funciona el método " .fit()".

Gracias!!

Para los que están el colab y tienen líos para montar las imagenes

caras = pd.DataFrame([])

for root, dirs, files in os.walk(path):  
   for file in files:
      im = imageio.imread(root+"/"+file)/255
      cara = pd.Series(im.flatten(), name=path)
      caras = caras.append(cara)
    
fig, axes = plt.subplots(5, 10, figsize=(15,8),
                       subplot_kw = {'xticks' : [], 'yticks':[]},
                        gridspec_kw = dict(hspace = 0.01, wspace = 0.01))


for i, ax in enumerate(axes.flat):
    ax.imshow(caras.iloc[i].values.reshape(112,92), cmap = "gray")
     

Deben de explicar un poco mejor cada termino del codigo. Uno no sabe si utilizar o no en otros problemas que tengamos. Además el mismo ejercicio se encuentra en internet.

También podemos explicar cada varianza

# Verificar la varianza explicada por cada componente principal
explained_variance_ratio = pca.explained_variance_ratio_
cumulative_variance = np.cumsum(explained_variance_ratio)
print("Varianza explicada por cada componente principal:")
print(explained_variance_ratio)
print("Varianza explicada acumulada:")
print(cumulative_variance)

Uff! ¡Excelente clase! El profesor Sebastián explica muy bien.

Estos son los pasos de los videos de Juan Gabriel Gomila, para comparar otras enseñanzas: Analisis de Componentes Principales - Paso a Paso \- Estandarizar los datos (para cada una de las m observaciones) \- Obtener los vectores y valores propios a partir de la matriz de covarianzas o de correlaciones o incluso la técnica de "singular vector descomposition" \- Ordenar los valores propios en orden descendente y quedarnos con los "p" que se correspondan a los "p" mayores y así disminuir el número de variables del dataset (p\
Algo interesante para analizar es la relacion de Cantidad de Componentes Vs. Porcentaje de varianza explicada, la relacion es explonencial: ![](https://static.platzi.com/media/user_upload/image-35b42794-b209-4fc6-8a01-3ef17b94fe10.jpg)

Excelente curso.