Análisis de Componentes Principales en el Conjunto de Datos Iris

Beginner

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

Introducción

En este laboratorio, realizaremos el Análisis de Componentes Principales (PCA, por sus siglas en inglés) en el conjunto de datos Iris utilizando scikit-learn de Python. El PCA es una técnica utilizada para reducir la dimensionalidad de un conjunto de datos mientras se conserva la mayor cantidad posible de varianza. En términos más simples, ayuda a identificar las características más importantes en un conjunto de datos y descartar las menos importantes. El conjunto de datos Iris es un conjunto de datos famoso en el campo del aprendizaje automático y contiene información sobre los atributos físicos de tres diferentes tipos de flores Iris.

Consejos sobre la VM

Una vez que se haya iniciado 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 las operaciones no se puede automatizar 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 resolveremos rápidamente el problema para usted.

Importar las bibliotecas necesarias

Comenzaremos importando las bibliotecas necesarias: numpy, matplotlib.pyplot, los módulos de descomposición y conjuntos de datos de scikit-learn.

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

Cargar el conjunto de datos

A continuación, cargaremos el conjunto de datos Iris utilizando la función load_iris() de scikit-learn. Luego, separaremos las variables de características (X) y objetivo (y).

iris = datasets.load_iris()
X = iris.data
y = iris.target

Visualizar el conjunto de datos

Antes de realizar el PCA, primero visualicemos el conjunto de datos en 3D utilizando matplotlib. Esto nos dará una idea de cómo se distribuyen los diferentes tipos de flores Iris en el conjunto de datos.

fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = fig.add_subplot(111, projection="3d", elev=48, azim=134)
ax.set_position([0, 0, 0.95, 1])
plt.cla()
for name, label in [("Setosa", 0), ("Versicolour", 1), ("Virginica", 2)]:
    ax.text3D(
        X[y == label, 0].mean(),
        X[y == label, 1].mean() + 1.5,
        X[y == label, 2].mean(),
        name,
        horizontalalignment="center",
        bbox=dict(alpha=0.5, edgecolor="w", facecolor="w"),
    )
y = np.choose(y, [1, 2, 0]).astype(float)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.nipy_spectral, edgecolor="k")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
plt.show()

Realizar el PCA

Ahora que hemos visualizado el conjunto de datos, realicemos el PCA sobre él. Utilizaremos la función PCA() de scikit-learn para esto. Estableceremos el número de componentes en 3, ya que queremos reducir el conjunto de datos de 4 dimensiones (4 características) a 3 dimensiones.

pca = decomposition.PCA(n_components=3)
pca.fit(X)
X = pca.transform(X)

Visualizar el conjunto de datos reducido

Finalmente, visualicemos el conjunto de datos reducido en 3D utilizando matplotlib. Utilizaremos el mismo código que en el Paso 3, pero esta vez graficaremos el conjunto de datos reducido (X) en lugar del conjunto de datos original.

fig = plt.figure(1, figsize=(4, 3))
plt.clf()
ax = fig.add_subplot(111, projection="3d", elev=48, azim=134)
ax.set_position([0, 0, 0.95, 1])
plt.cla()
for name, label in [("Setosa", 0), ("Versicolour", 1), ("Virginica", 2)]:
    ax.text3D(
        X[y == label, 0].mean(),
        X[y == label, 1].mean() + 1.5,
        X[y == label, 2].mean(),
        name,
        horizontalalignment="center",
        bbox=dict(alpha=0.5, edgecolor="w", facecolor="w"),
    )
y = np.choose(y, [1, 2, 0]).astype(float)
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y, cmap=plt.cm.nipy_spectral, edgecolor="k")
ax.xaxis.set_ticklabels([])
ax.yaxis.set_ticklabels([])
ax.zaxis.set_ticklabels([])
plt.show()

Resumen

En este laboratorio, aprendimos cómo realizar el Análisis de Componentes Principales (PCA) en el conjunto de datos Iris utilizando scikit-learn de Python. Cargamos el conjunto de datos, lo visualizamos en 3D, realizamos el PCA sobre él para reducir su dimensionalidad y, finalmente, lo visualizamos nuevamente en 3D. El PCA es una técnica poderosa que se puede utilizar en muchas aplicaciones para reducir la dimensionalidad de un conjunto de datos e identificar las características más importantes.