Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Preparando el conjunto de imágenes para aplicar PCA

16/18
Recursos

Aportes 15

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

la mejor manera de conseguir el data set es:

import sklearn.datasets
 data= sklearn.datasets.fetch_olivetti_faces()

automaticamente se descarga el dataset.

En la siguiente clase en el sistema de archivos se puede acceder a las imágenes y a todos los archivos del curso. La carpeta que utiliza se encuentra en la sección de PCA, llamada “imagenes”. Sólo es necesario descargar esa carpeta.

  • PCA es una técnica muy útil para reducir la cantidad de dimensiones con las que estamos trabajando.
  • Muchas veces nuestro conjunto de datos es muy grande y es necesario reducirlo al menos en un 20%, dejando el 80% de datos mas significativo.

Buenas, les dejo una libreria que hice en python para aplicar transformacion PCA de manera rapida y sencilla. Espero que les sea útil.

https://github.com/ivanachillee/pcalib

La web GitDown permite descargar la carpeta deseada de un proyecto solo hay que indicarle la [rl y listo, es cómodo y fácil.

¿Por qué estandarizar los datos?

“El proceso de PCA identifica aquellas direcciones en las que la varianza es mayor. Como la varianza de una variable se mide en su misma escala elevada al cuadrado, si antes de calcular las componentes no se estandarizan todas las variables para que tengan media 0 y desviación estándar 1, aquellas variables cuya escala sea mayor dominarán al resto. De ahí que sea recomendable estandarizar siempre los datos”.

Fuente

Para los que no saben usar el dataset de scikit learn que compartio johanR, con ese dataset no hay necesidad de usar imageio para cargar las imagenes, porque ya al hacer:

import sklearn.datasets
data= sklearn.datasets.fetch_olivetti_faces()

Alli se descarga automaticamente, como dice johanR, todo el dataset en la variable data

tampoco es necesario normalizar los valores porque ya en el dataset estan normalizados, lo unico que se necesitaria es consumirlos.

la variable data contiene el dataset, pero los valores estarian dentro de data.data.

Ademas, data.data es un array almacena individualmente cada imagen en cada posicion del mismo.

La imagen esta almacenada como una tira de valores (todos los valores en una sola dimension), como necesitamos es una matriz, le aplicaremos un reshape.

Las imagenes tienen 4096 valores en una dimension, el cual es un tamaño de 64 x 64 en dos dimensiones, entonces por ejemplo hariamos algo asi:

imagen_1 = data.data[0].reshape(64, 64)
imagen_2 = data.data[1].reshape(64, 64)

De esa forma estarian manipulando la misma matriz normalizada del profesor, por ejemplo para mostrar la imagen numero 6 del dataset seria asi:

plt.imshow(data.data[5].reshape(64,64), cmap='gray')

Para no ver los ejes cartesianos pueden usar tambien esto:
ax.set_axis_off()

Aunque si bien puede ser más fácil descargar las imágenes de la libreria de sklearn, con este código aprendemos a cargar nuestros propios datasets de imágenes, vale la pena entenderlo.

En el minuto 10:05, para saber las dimensiones a las que se debe volver a dar forma basta con ejecutar:

im.shape

Si quieren evitar complicarse importando el dataset de sklearn y prefieren seguir directamente a como lo hizo el profesor, les dejo como subir el database para tenerlo disponible en Jupyter (en Windows):

  1. Les dejo el dataset para que lo descarguen

  2. Entra en tu explorador de archivos y sigue la ruta OS(C:) /Usuarios/TuNombreDeUsuario/Documents/Platzi/ CarpetaDondeTengasGuardadoLaClaseEnJupyter

  3. Obtener el archivo con el dataset que envié antes

  4. Copiar la carpeta con el dataset a la ruta que usa el profesor: "imagenes/s3/3.pgm

  5. ¡Es todo! La carpeta aparecerá disponible para su uso en Jupyter y podrán utilizar el código que muestra el profesor.

Para poder abrir la imagen en google colab yo usé las siguientes líneas de código, además de subir la carpeta a mi drive

<code> 
from google.colab import drive
drive.mount('/content/drive')
%cd "/content/drive/MyDrive/Colab Notebooks/Curso AL aplicada a machine learning/Img/imagenes/s3"
im = imageio.imread("./3.pgm")

Algunas opciones para poder cargar los datos:

  • Opción para cargar archivos directamente de dataset de sklearn
import sklearn.datasets           
im1= sklearn.datasets.fetch_olivetti_faces()
  • Cargar archivos de una carpeta guardada en la misma dirección que el archivo .py
im3 = imageio.imread('imagenes/s3/3.pgm')   
  • Cargar archivos en una dirección distinta al archivo .py
im2 = imageio.imread(r'D:\VS Code\imagenes\s7\7.pgm')    

no entendí muy bien dado que no tengo una carpeta con tantas caras 😦