Análisis de Componentes Principales

Beginner

This tutorial is from open-source community. Access the source code

Introducción

El Análisis de Componentes Principales (PCA, por sus siglas en inglés) es una técnica estadística utilizada para simplificar datos. Es una técnica de transformación lineal que encuentra las características o patrones más importantes en los datos. El PCA se utiliza ampliamente en el análisis de datos y el aprendizaje automático para la reducción de dimensionalidad, la compresión de datos y la extracción de características. En este laboratorio, usaremos la biblioteca scikit-learn de Python para realizar PCA en un conjunto de datos y visualizar los resultados.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar bibliotecas

Comenzamos importando las bibliotecas necesarias para este laboratorio. Usaremos numpy para operaciones numéricas, matplotlib para la visualización y scikit-learn para el PCA.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

Crear datos

Generaremos un conjunto de datos aleatorios para este laboratorio. El conjunto de datos tendrá tres variables: x, y y z. Definiremos x e y como variables aleatorias con distribución normal, con media 0 y desviación estándar de 0,5. z también tiene una distribución normal con media 0 y desviación estándar de 0,1.

e = np.exp(1)
np.random.seed(4)

y = np.random.normal(scale=0.5, size=(30000))
x = np.random.normal(scale=0.5, size=(30000))
z = np.random.normal(scale=0.1, size=len(x))

Realizar el PCA

A continuación, realizaremos el PCA en nuestro conjunto de datos. Primero concatenamos x, y y z para formar una matriz tridimensional Y. Luego creamos una instancia de la clase PCA y la ajustamos a nuestros datos. A continuación, podemos acceder a los componentes principales utilizando el atributo components_ del objeto PCA.

Y = np.c_[x, y, z]
pca = PCA(n_components=3)
pca.fit(Y)
components = pca.components_

Visualizar los resultados del PCA

Podemos visualizar los resultados de nuestro PCA mediante la representación de los componentes principales. Creamos un diagrama de dispersión tridimensional de nuestros datos y coloreamos cada punto según su densidad. Luego representamos los primeros dos componentes principales como un plano. Repetimos este proceso para dos vistas diferentes de los datos.

fig = plt.figure(figsize=(10, 5))

## Primera vista
ax = fig.add_subplot(121, projection="3d", elev=-40, azim=-80)
ax.set_title("Vista 1")

## Representar los datos
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)

## Representar los componentes principales
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)

## Segunda vista
ax = fig.add_subplot(122, projection="3d", elev=30, azim=20)
ax.set_title("Vista 2")

## Representar los datos
density = np.exp(-(x ** 2 + y ** 2))
ax.scatter(x, y, z, c=density, cmap="plasma", marker="+", alpha=0.4)

## Representar los componentes principales
v1 = components[:, 0]
v2 = components[:, 1]
x_pca_plane = np.array([v1[0], -v1[0], -v1[0], v1[0]])
y_pca_plane = np.array([v1[1], -v1[1], -v1[1], v1[1]])
z_pca_plane = np.array([v1[2], -v1[2], v1[2], v1[2]])
ax.plot_surface(x_pca_plane, y_pca_plane, z_pca_plane, alpha=0.2)

plt.show()

Resumen

En este laboratorio, aprendimos cómo realizar el PCA en un conjunto de datos utilizando la biblioteca scikit-learn de Python. Generamos un conjunto de datos aleatorios con tres variables, realizamos el PCA y visualizamos los resultados. Representamos los datos en un diagrama de dispersión tridimensional y agregamos un plano para los primeros dos componentes principales. El PCA es una técnica poderosa para reducir la dimensionalidad de los datos y encontrar los patrones o características más importantes.