scikit-learn

ScikitLearn

Tutorial ScikitLearn: Reducción de la dimensionalidad con PCA

Scikit Learn: Reducción de la dimensionalidad con PCA. Aprende a aplicar PCA en Scikit Learn para mejorar tus modelos de machine learning, con conceptos clave y ejemplos prácticos.

Aprende ScikitLearn GRATIS y certifícate

¿Qué es la reducción de la dimensionalidad?

En el contexto del aprendizaje automático, la dimensionalidad se refiere al número de características o variables que describen cada instancia en un conjunto de datos. A medida que la cantidad de características aumenta, los datos se vuelven más complejos y difíciles de manejar, fenómeno conocido como la maldición de la dimensionalidad. La reducción de la dimensionalidad es un conjunto de técnicas que permiten disminuir el número de variables en un dataset sin perder información relevante.

La maldición de la dimensionalidad implica que, en espacios de alta dimensionalidad, los datos pueden volverse escasos y los algoritmos de aprendizaje pueden sufrir un rendimiento deficiente. Además, un número elevado de características puede conducir a modelos más complejos, aumentos en el costo computacional y un mayor riesgo de sobreajuste.

La reducción de la dimensionalidad ofrece múltiples beneficios:

  • Simplificación del modelo: Al reducir el número de variables, el modelo se vuelve más sencillo y fácil de interpretar.
  • Mejora del rendimiento: Eliminar características irrelevantes o redundantes puede aumentar la precisión y la capacidad de generalización del modelo.
  • Reducción del tiempo de procesamiento: Menos dimensiones implican menores requerimientos de cómputo, acelerando el entrenamiento y la predicción.
  • Visualización de datos: Reduciendo a dos o tres dimensiones, es posible representar gráficamente datos complejos y detectar patrones no evidentes.

Existen dos enfoques principales para la reducción de la dimensionalidad:

1.   Selección de características: Consiste en identificar y conservar un subconjunto de las variables originales que aportan mayor información. Técnicas comunes incluyen:

  • Métodos de filtrado: Utilizan medidas estadísticas para evaluar la relevancia de cada característica.
  • Métodos de envoltura: Seleccionan características basándose en el rendimiento de un modelo específico.
  • Métodos embebidos: Integran la selección de características durante el proceso de entrenamiento del modelo.

2.   Extracción de características: Implica transformar las variables originales en un nuevo conjunto de características, generalmente de menor dimensión. Estas nuevas variables buscan capturar la máxima varianza o información esencial del conjunto de datos. Ejemplos destacados son:

  • Análisis de Componentes Principales (PCA): Proyecta los datos en ejes ortogonales que explican la mayor varianza posible.
  • Análisis Discriminante Lineal (LDA): Encuentra una representación que maximiza la separabilidad entre clases.
  • Isomap y t-SNE: Técnicas no lineales que preservan la estructura geométrica de los datos en espacios de menor dimensión.

Un ejemplo práctico es el manejo de datos en visión por computadora, donde las imágenes pueden tener miles de píxeles como características. Aplicar reducción de la dimensionalidad permite manejar estos datos de manera más eficiente y eliminar ruido o información redundante.

En Scikit-Learn, se proporcionan múltiples herramientas para realizar reducción de la dimensionalidad, facilitando su integración en flujos de trabajo de ciencia de datos. Estas herramientas permiten:

  • Implementar fácilmente técnicas de extracción y selección de características.
  • Combinar procesos de preprocesamiento y reducción de dimensionalidad mediante pipelines.
  • Evaluar el impacto de la reducción de dimensionalidad en el rendimiento de los modelos.

La adopción de técnicas de reducción de la dimensionalidad es esencial para abordar problemas de alta dimensionalidad y mejorar la eficiencia y eficacia de los modelos de aprendizaje automático.

Conceptos básicos de PCA y requisitos para poder aplicarla

El Análisis de Componentes Principales (PCA) es una técnica estadística utilizada para simplificar conjuntos de datos con muchas variables correlacionadas, transformándolos en un conjunto menor de variables no correlacionadas llamadas componentes principales. Estos componentes capturan la mayor parte de la varianza presente en los datos originales, lo que permite reducir la dimensionalidad sin perder información esencial.

PCA opera mediante una transformación lineal que proyecta los datos a un nuevo espacio donde los ejes (componentes principales) están ordenados de manera que el primer componente captura la máxima varianza posible, el segundo componente captura la siguiente mayor varianza y así sucesivamente. Este ordenamiento es crucial, ya que suele ser suficiente conservar los primeros componentes para representar adecuadamente los datos.

Fundamentos matemáticos de PCA

El Análisis de Componentes Principales (PCA) es una técnica que busca reducir la dimensionalidad de los datos al proyectarlos en un nuevo espacio con menos dimensiones, preservando la mayor cantidad de varianza posible. A continuación, se describen los fundamentos matemáticos:

1. Representación matemática del PCA

Dado un conjunto de datos $(X)$ con $(n)$ observaciones y $(p)$ características:
$$
X = \begin{bmatrix} 
x_{11} & x_{12} & \cdots & x_{1p} \\
x_{21} & x_{22} & \cdots & x_{2p} \\
\vdots & \vdots & \ddots & \vdots \\
x_{n1} & x_{n2} & \cdots & x_{np}
\end{bmatrix}
$$  

Queremos encontrar un conjunto de $(k)$ componentes principales $( \mathbf{z}_1, \mathbf{z}_2, \dots, \mathbf{z}_k )$ donde $(k < p)$ tal que:

  1. $(\mathbf{z}_1, \mathbf{z}_2, \dots, \mathbf{z}_k)$ son combinaciones lineales de las columnas de (X).
  2. Los componentes principales son ortogonales entre sí.
  3. La varianza capturada por los primeros $(k)$ componentes es máxima.

Cada componente principal $( \mathbf{z}_j )$ se define como:
$$
\mathbf{z}_j = X \cdot \mathbf{w}_j
$$
donde $(\mathbf{w}_j)$ es el vector de pesos (autovector) asociado a $(\mathbf{z}_j)$.

2. Varianza y autovalores

La varianza capturada por cada componente principal está determinada por los autovalores de la matriz de covarianza de (X). La matriz de covarianza se calcula como:
$$
\mathbf{C} = \frac{1}{n-1} X^T X
$$
donde:

$(\mathbf{C})$ es una matriz simétrica de tamaño $(p \times p)$.

Resolviendo el problema de autovalores para $(\mathbf{C})$:
$$
\mathbf{C} \mathbf{w} = \lambda \mathbf{w}
$$

$(\lambda)$ representa los autovalores, que indican la varianza explicada por cada componente principal.

$(\mathbf{w})$ son los autovectores, que definen la dirección de cada componente principal.

Los autovalores están ordenados de mayor a menor, de modo que el primer componente principal (PC1) captura la mayor varianza.

3. Proceso del PCA

Paso 1: Estandarización de los datos

Antes de aplicar PCA, es fundamental que las variables tengan la misma escala. Esto se logra restando la media y dividiendo entre la desviación estándar:
$$
X_{\text{estandarizado}} = \frac{X - \mu}{\sigma}
$$
donde $(\mu)$ y $(\sigma)$ son el vector de medias y desviaciones estándar, respectivamente.

Paso 2: Cálculo de la matriz de covarianza

Como se definió anteriormente:
$$
\mathbf{C} = \frac{1}{n-1} X^T X
$$

Paso 3: Descomposición en valores singulares

La matriz de covarianza $(\mathbf{C})$ se descompone para obtener autovalores y autovectores:
$$
\mathbf{C} = \mathbf{W} \Lambda \mathbf{W}^T
$$
donde:

$(\mathbf{W})$ es la matriz de autovectores.

$(\Lambda)$ es la matriz diagonal de autovalores.

Paso 4: Selección de componentes principales

Seleccionamos los primeros $(k)$ autovectores correspondientes a los $(k)$ autovalores más grandes. Estos autovectores forman la matriz $(\mathbf{W}_k)$.

Paso 5: Proyección de los datos

Los datos originales se proyectan en el nuevo espacio de menor dimensión:
$$
Z = X \cdot \mathbf{W}_k
$$

$(Z)$ es la matriz transformada con $(n)$ observaciones y $(k)$ componentes principales.

4. Varianza explicada

La proporción de varianza explicada por el (j)-ésimo componente principal se calcula como:
[
\text{Varianza explicada} = \frac{\lambda_j}{\sum_{i=1}^{p} \lambda_i}
]

La suma acumulada de estas proporciones ayuda a decidir cuántos componentes principales conservar.

5. Reconstrucción aproximada

Los datos originales pueden ser reconstruidos utilizando los componentes principales:
$$
X_{\text{aproximado}} = Z \cdot \mathbf{W}_k^T
$$
Esta reconstrucción será exacta si se usan todos los componentes principales, pero al utilizar solo los primeros (k) componentes se introduce cierta pérdida de información.

Requisitos para aplicar PCA:

  • Escalado de las variables: Es fundamental que las variables estén en la misma escala. Si las variables tienen unidades o rangos diferentes, las que tienen mayor magnitud influenciarán más en los componentes principales. Para evitar este sesgo, es común aplicar técnicas de estandarización como el StandardScaler de Scikit Learn, que transforma los datos para que cada variable tenga media cero y desviación estándar uno.
  • Linealidad: PCA asume que las relaciones entre las variables son lineales. Esto significa que captura las correlaciones lineales pero no es efectivo para capturar relaciones no lineales. Si se sospecha que hay relaciones no lineales significativas, podrían ser más adecuadas técnicas como Kernel PCA o métodos no lineales de reducción de dimensionalidad.
  • Ausencia de datos faltantes: PCA no puede manejar datos faltantes de forma nativa. Es necesario imputar o eliminar los registros con valores perdidos antes de aplicar el análisis. Herramientas como el SimpleImputer o el KNNImputer pueden ser útiles para esta tarea.
  • Correlación entre variables: Para que PCA sea efectivo, debe existir cierta correlación entre las variables. Si las variables son independientes, PCA no aportará una reducción significativa de la dimensionalidad. La presencia de correlaciones permite que los componentes principales capturen la varianza compartida.
  • Cantidad de variables y observaciones: Aunque no hay un requisito estricto, es recomendable que el número de observaciones sea mayor que el número de variables. Esto asegura que los componentes principales estén bien definidos y que el análisis sea robusto.

Implementación básica de PCA en Scikit Learn:

A continuación, se presenta un ejemplo de cómo aplicar PCA utilizando Scikit Learn:

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Generación de un conjunto de datos de ejemplo utilizando default_rng
rng = np.random.default_rng(42)  # Semilla para reproducibilidad
X = rng.random((100, 5))  # 100 observaciones, 5 variables

# Estandarización de los datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Aplicación de PCA para reducir a 2 componentes principales
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# Visualización de la varianza explicada
print("Varianza explicada por cada componente principal:")
print(pca.explained_variance_ratio_)

En este ejemplo:

  • Se generan datos aleatorios y se estandarizan utilizando StandardScaler.
  • Se aplica PCA para reducir las 5 variables originales a 2 componentes principales.
  • Se imprime la proporción de varianza explicada por cada componente, lo que ayuda a entender cuánta información se conserva.

Interpretación de los componentes principales:

Los componentes principales son combinaciones lineales de las variables originales. Los loadings o cargas factoriales indican el peso de cada variable en cada componente y pueden ser obtenidos a partir del atributo components_ del objeto PCA:

# Obtención de las cargas factoriales
loadings = pd.DataFrame(pca.components_.T,
                        columns=['PC1', 'PC2'],
                        index=['Variable1', 'Variable2', 'Variable3', 'Variable4', 'Variable5'])

print("Cargas factoriales:")
print(loadings)

Salida: 

Este análisis permite entender la contribución de cada variable a los componentes principales y facilita la interpretación de los resultados.

Consideraciones adicionales:

  • Normalidad de los datos: Aunque PCA no requiere que los datos sigan una distribución normal, si los datos son normales, la interpretabilidad mejora y los componentes pueden ser más significativos.
  • Outliers: La presencia de valores atípicos puede afectar significativamente los resultados, ya que influyen en la varianza. Es aconsejable detectarlos y tratarlos antes de aplicar PCA.
  • Determinación del número de componentes: Decidir cuántos componentes conservar es crucial. Técnicas como el criterio de codo o el análisis del valor singular pueden ayudar en esta decisión.
  • Aplicaciones típicas de PCA:
  • Compresión de datos: Reducir el tamaño de los datos para almacenamiento o procesamiento más eficiente.
  • Visualización: Representar datos de alta dimensionalidad en 2D o 3D para identificar patrones o agrupamientos.
  • Eliminación de ruido: Al conservar los componentes que capturan la mayor varianza, se reduce el impacto de ruido y se mejora la calidad de los datos.
  • Preprocesamiento: Como paso previo en tareas de clustering o regresión, facilitando el desempeño de los algoritmos.

PCA es una herramienta versátil para simplificar datos complejos, pero su aplicación requiere cumplir ciertos requisitos y entender sus fundamentos para interpretar correctamente los resultados.

Uso de PCA en Scikit Learn

El Análisis de Componentes Principales (PCA) es una herramienta esencial en el preprocesamiento de datos para reducir la dimensionalidad de conjuntos de datos complejos. En Scikit Learn, la implementación de PCA es accesible y flexible, permitiendo adaptar el análisis a diferentes necesidades.

Para utilizar PCA en Scikit Learn, se emplea la clase PCA del módulo sklearn.decomposition. Esta clase ofrece múltiples parámetros para personalizar el análisis según el contexto del problema.

A continuación, se presenta un flujo típico para aplicar PCA en un conjunto de datos:

  • Importación de librerías necesarias:
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
  • Carga y preparación de los datos:

Es fundamental cargar los datos y, si es necesario, estandarizar las variables. La estandarización asegura que cada característica contribuya por igual al análisis, evitando que variables con magnitudes mayores dominen los componentes principales.

# Generar datos sintéticos
n_samples = 200  # Número de muestras
n_features = 10  # Número de características

# Crear un generador de números aleatorios
rng = np.random.default_rng(seed=42)  # Semilla para reproducibilidad

# Generar características aleatorias
X = rng.random((n_samples, n_features))

# Generar una etiqueta binaria o multiclase aleatoria (por ejemplo, 3 clases)
y = rng.choice([0, 1, 2], size=n_samples)

# Crear un DataFrame de Pandas
feature_names = [f'Variable{i+1}' for i in range(n_features)]
df = pd.DataFrame(X, columns=feature_names)
df['etiqueta'] = y  # Añadir la etiqueta al DataFrame

# Separar características (X) y etiqueta (y)
X = df.drop('etiqueta', axis=1)
y = df['etiqueta']

# Estandarizar las características
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
  • Configuración y ajuste del modelo PCA:

Se crea una instancia de PCA, especificando el número de componentes principales deseados o la cantidad de varianza que se pretende explicar. Si no se especifica ningún parámetro, PCA calculará tantos componentes como características tenga el conjunto de datos.

# Crear una instancia de PCA para explicar el 95% de la varianza
pca = PCA(n_components=0.95)

# Ajustar PCA a los datos estandarizados
pca.fit(X_scaled)
  • Transformación de los datos:

Tras ajustar el modelo PCA, se pueden transformar los datos originales al nuevo espacio de componentes principales. Este paso reduce efectivamente la dimensionalidad del conjunto de datos.

# Transformar los datos originales
X_pca = pca.transform(X_scaled)

# Verificar la forma del nuevo conjunto de datos
print("Dimensiones originales:", X_scaled.shape)
print("Dimensiones tras PCA:", X_pca.shape)
  • Análisis de resultados:

Es útil examinar la cantidad de varianza explicada por cada componente principal y el total de componentes seleccionados. El atributo explained_variance_ratio_ proporciona la proporción de varianza explicada por cada componente.

# Varianza explicada por componente
print("Varianza explicada por cada componente:")
print(pca.explained_variance_ratio_)

# Número de componentes seleccionados
print("Número de componentes principales:", pca.n_components_)
  • Integración en un pipeline:

Para un flujo de trabajo más eficiente, especialmente cuando se combinan múltiples etapas de preprocesamiento y modelado, es recomendable utilizar un Pipeline de Scikit Learn. Esto facilita la aplicación secuencial de transformaciones y garantiza la reproducibilidad.

from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestClassifier

# Suponiendo que 'y' es la variable objetivo
y = df['etiqueta']

# Crear un pipeline que incluye estandarización, PCA y un clasificador
pipeline = Pipeline([
      ('escalado', StandardScaler()),
      ('pca', PCA(n_components=0.95)),
      ('clasificador', RandomForestClassifier())
], memory = None)

# Ajustar el pipeline a los datos
pipeline.fit(X, y)
  • Elección de parámetros avanzados:

La clase PCA ofrece parámetros adicionales para ajustar el comportamiento del análisis. Algunos de los más relevantes son:

  • svd_solver: Define el algoritmo utilizado para realizar la descomposición en valores singulares. Opciones como 'auto', 'full', 'arpack' y 'randomized' permiten optimizar el rendimiento según el tamaño y naturaleza de los datos.
  • whiten: Si se establece en True, los componentes resultantes son escalados para tener una varianza unitaria. Esto es útil cuando se requiere que las componentes sean no correlacionadas y de igual varianza.
  • random_state: Controla la aleatoriedad en el algoritmo randomized para garantizar la reproducibilidad.

Ejemplo de uso con parámetros avanzados:

# Instancia de PCA con parámetros avanzados
pca = PCA(n_components=10, svd_solver='randomized', whiten=True, random_state=42)

# Ajustar y transformar los datos
X_pca = pca.fit_transform(X_scaled)
  • Reconstrucción aproximada de los datos originales:

En algunos casos, es útil reconstruir una aproximación de los datos originales a partir de los componentes principales. Esto puede servir para evaluar la pérdida de información tras la reducción de dimensionalidad.

# Reconstruir datos aproximados
X_reconstruido = pca.inverse_transform(X_pca)

# Comparar datos originales y reconstruidos
error_reconstrucción = np.mean((X_scaled - X_reconstruido) ** 2)
print("Error medio de reconstrucción:", error_reconstrucción)
  • Visualización de los componentes principales:

Para conjuntos de datos reducidos a dos o tres componentes principales, es posible visualizar los datos en un plano o en el espacio tridimensional, facilitando la identificación de patrones o agrupamientos.

import matplotlib.pyplot as plt

# Reducir a 2 componentes principales
pca_2d = PCA(n_components=2)
X_pca_2d = pca_2d.fit_transform(X_scaled)

# Visualización en 2D
plt.scatter(X_pca_2d[:, 0], X_pca_2d[:, 1], c=y, cmap='viridis', alpha=0.7)
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.title('PCA - Representación en 2D')
plt.colorbar(label='Etiqueta')
plt.show()

  • Interpretación de las cargas de los componentes:

Aunque la interpretación profunda de los componentes se aborda en otra sección, es importante saber cómo acceder a las cargas y a la varianza explicada en Scikit Learn.

# Cargas de los componentes
componentes = pd.DataFrame(pca.components_, columns=X.columns)
print("Componentes principales:")
print(componentes)

# Varianza explicada acumulada
varianza_acumulada = np.cumsum(pca.explained_variance_ratio_)
print("Varianza explicada acumulada:")
print(varianza_acumulada)

Al aplicar PCA en Scikit Learn, se facilita enormemente el proceso de reducción de dimensionalidad, permitiendo enfocarse en la interpretación y aplicación de los resultados en modelos predictivos o de exploración de datos. Además, la integración con otras herramientas de Scikit Learn, como los pipelines, optimiza el flujo de trabajo y asegura un manejo coherente y eficiente de los datos.

Interpretación de los datos obtenidos tras el PCA

Tras aplicar el Análisis de Componentes Principales (PCA), es fundamental interpretar correctamente los resultados obtenidos para comprender cómo las nuevas variables (componentes principales) representan la información contenida en los datos originales. Esta interpretación permite identificar qué variables originales contribuyen más a cada componente y cómo se relacionan entre sí.

Una de las primeras medidas a analizar es la varianza explicada por cada componente principal. El atributo explained_variance_ratio_ del objeto PCA proporciona la proporción de la varianza total capturada por cada componente:

import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Supongamos que ya tenemos nuestros datos estandarizados en X_scaled
pca = PCA(n_components=5)
pca.fit(X_scaled)

# Varianza explicada por cada componente
print("Varianza explicada por cada componente principal:")
print(pca.explained_variance_ratio_)

Analizando este output, podemos observar qué componentes son más relevantes. Por ejemplo, si el primer componente explica un 40% de la varianza, significa que captura el 40% de la información presente en los datos originales. La suma acumulada de las varianzas explicadas nos indica el porcentaje total de varianza capturada hasta un componente determinado.

Es común representar la varianza explicada acumulada mediante una gráfica, lo cual facilita la visualización de cuántos componentes son necesarios para capturar una proporción significativa de la varianza total:

import matplotlib.pyplot as plt

# Cálculo de la varianza explicada acumulada
varianza_acumulada = np.cumsum(pca.explained_variance_ratio_)

# Gráfico de la varianza explicada acumulada
plt.figure(figsize=(8, 5))
plt.plot(range(1, len(varianza_acumulada) + 1), varianza_acumulada, marker='o', linestyle='--')
plt.title('Varianza explicada acumulada')
plt.xlabel('Número de componentes principales')
plt.ylabel('Varianza explicada acumulada')
plt.grid(True)
plt.show()

Esta gráfica nos ayuda a decidir cuántos componentes principales conservar, observando dónde se produce un punto de inflexión en la curva. Sin embargo, la decisión final dependerá del balance entre simplicidad y preservación de información.

Otro aspecto clave en la interpretación es analizar las cargas de los componentes, que indican la correlación entre cada variable original y cada componente principal. Estas cargas se obtienen del atributo components_ del objeto PCA:

# Cargas de los componentes principales
cargas_componentes = pd.DataFrame(pca.components_, columns=X.columns)
print("Cargas de los componentes principales:")
print(cargas_componentes)

Cada fila en cargas_componentes corresponde a un componente principal, y cada columna representa una variable original. Los valores muestran la contribución de cada variable al componente, donde un valor positivo o negativo alto indica una fuerte asociación.

Es útil interpretar las cargas para entender qué variables están influyendo en cada componente. Por ejemplo, si en el primer componente las variables edad y ingreso tienen cargas altas y positivas, podemos inferir que este componente captura la variación asociada con la edad y el ingreso.

Para facilitar esta interpretación, se pueden visualizar las cargas mediante un heatmap:

import seaborn as sns

plt.figure(figsize=(10, 8))
sns.heatmap(cargas_componentes,
            cmap='viridis',
            annot=True,
            fmt=".2f",
            xticklabels=cargas_componentes.columns,
            yticklabels=[f'PC{i}' for i in range(1, pca.n_components_ + 1)])
plt.title('Cargas de los componentes principales')
plt.xlabel('Variables originales')
plt.ylabel('Componentes principales')
plt.show()

Este heatmap permite identificar rápidamente patrones y relaciones entre variables y componentes. Las casillas con colores más intensos indican cargas más significativas.

Además de las cargas, es interesante examinar los scores de los componentes principales, es decir, las coordenadas de las observaciones en el espacio reducido. Estos scores se obtienen al transformar los datos originales:

# Transformación de los datos a componentes principales
X_pca = pca.transform(X_scaled)

# Crear un DataFrame con los scores
scores_pca = pd.DataFrame(X_pca, columns=[f'PC{i}' for i in range(1, pca.n_components_ + 1)])
print("Scores de las observaciones en los componentes principales:")
print(scores_pca.head())

Los scores permiten visualizar cómo se distribuyen las observaciones en los nuevos ejes. Una representación común es un biplot, que combina los scores de las observaciones con las cargas de las variables:

# Biplot de los dos primeros componentes principales
plt.figure(figsize=(8, 6))
plt.scatter(scores_pca['PC1'], scores_pca['PC2'], alpha=0.5)
for i, variable in enumerate(X.columns):
    plt.arrow(0, 0, cargas_componentes.iloc[0, i]*max(scores_pca['PC1']), cargas_componentes.iloc[1, i]*max(scores_pca['PC2']),
              color='r', alpha=0.5)
    plt.text(cargas_componentes.iloc[0, i]*max(scores_pca['PC1'])*1.15, cargas_componentes.iloc[1, i]*max(scores_pca['PC2'])*1.15,
             variable, color='g', ha='center', va='center')
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.title('Biplot de PCA')
plt.grid(True)
plt.show()

El biplot ofrece una visión conjunta de cómo las variables originales contribuyen a los componentes y cómo se distribuyen las observaciones. Las flechas representan las variables, mientras que los puntos corresponden a las observaciones.

Al interpretar el biplot, es importante destacar:

  • La dirección y longitud de las flechas indican la influencia de las variables en los componentes.
  • Ángulos pequeños entre flechas sugieren correlación positiva entre variables.
  • Ángulos cercanos a 180 grados indican correlación negativa.
  • Ángulos de 90 grados sugieren ausencia de correlación.

Otro aspecto relevante es analizar la comunalidad de las variables, que mide la proporción de la varianza de cada variable explicada por los componentes seleccionados. La comunalidad se calcula sumando el cuadrado de las cargas de una variable en todos los componentes:

# Cálculo de la comunalidad de las variables
comunalidades = np.sum(cargas_componentes**2, axis=0)
comunalidades = pd.DataFrame(comunalidades, index=X.columns, columns=['Comunalidad'])
print("Comunalidad de las variables:")
print(comunalidades)

Una comunalidad alta indica que la variable está bien representada por los componentes principales seleccionados. Si una variable tiene una comunalidad baja, puede ser que no esté siendo capturada adecuadamente y se deba reconsiderar el número de componentes.

Cuando se trabaja con PCA, es esencial recordar que los componentes principales son combinaciones lineales de las variables originales. Por tanto, la interpretación semántica de los componentes debe basarse en las variables que más contribuyen a ellos. En algunos casos, los componentes pueden representar conceptos latentes o factores subyacentes en los datos.

Además, en ciertos contextos es útil correlacionar los componentes principales con variables externas o categorías predefinidas. Por ejemplo, si se dispone de etiquetas de clase, se puede explorar cómo se distribuyen las clases en el espacio de los componentes:

# Supongamos que tenemos una variable de clase 'y'
plt.figure(figsize=(8, 6))
sns.scatterplot(x='PC1', y='PC2', hue=y, data=scores_pca, palette='Set1', alpha=0.7)
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.title('Distribución de clases en el espacio de componentes principales')
plt.legend(title='Clase')
plt.show()

Esta gráfica permite observar si los componentes principales separan adecuadamente las clases, lo cual puede ser útil para tareas de clasificación o para comprender la estructura interna de los datos.

Finalmente, es importante tener en cuenta las limitaciones del PCA al interpretar los resultados. El PCA asume linealidad y maximiza la varianza, por lo que puede no capturar relaciones no lineales o información relevante para ciertos objetivos. Además, los componentes principales pueden ser sensibles a valores atípicos, lo que puede distorsionar la interpretación.

En resumen, la interpretación de los datos obtenidos tras el PCA implica:

  • Analizar la varianza explicada por cada componente.
  • Examinar las cargas de los componentes para entender la contribución de las variables.
  • Visualizar los scores de las observaciones en el espacio reducido.
  • Utilizar herramientas gráficas como el biplot y el heatmap para facilitar la comprensión.
  • Considerar la comunalidad de las variables para evaluar su representación.
  • Reconocer las limitaciones del PCA y complementar el análisis con otras técnicas si es necesario.

Determinar el número óptimo de componentes

Al aplicar el Análisis de Componentes Principales (PCA), surge la necesidad de determinar cuántos componentes son suficientes para representar adecuadamente los datos sin perder información relevante. Seleccionar el número óptimo de componentes es crucial para equilibrar la reducción de dimensionalidad y la preservación de la variabilidad de los datos originales.

Existen varios métodos para decidir el número adecuado de componentes principales. A continuación, se describen las técnicas más habituales, acompañadas de ejemplos prácticos en Scikit-Learn.

1. Varianza explicada acumulada

Una aproximación común es seleccionar el número mínimo de componentes que acumulen un porcentaje deseado de la varianza explicada. Por ejemplo, es habitual conservar suficientes componentes para explicar al menos el 90% o 95% de la varianza total.

Para implementar este criterio en Scikit-Learn:

import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Supongamos que X es nuestro conjunto de datos
# Estandarización de los datos
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Inicializamos PCA sin especificar n_components
pca_full = PCA()
pca_full.fit(X_scaled)

# Calculamos la varianza explicada acumulada
varianza_acumulada = np.cumsum(pca_full.explained_variance_ratio_)

# Determinamos el número de componentes que acumulan al menos el 95% de la varianza
umbral_varianza = 0.95
n_componentes_optimos = np.argmax(varianza_acumulada >= umbral_varianza) + 1

print(f"Número óptimo de componentes para explicar al menos el 95% de la varianza: {n_componentes_optimos}")

En este ejemplo, hemos calculado la varianza acumulada y determinado el número mínimo de componentes que superan el umbral establecido. Este método es sencillo pero puede no siempre reflejar la estructura intrínseca de los datos.

2. Gráfico Scree (Scree Plot)

El gráfico Scree es una herramienta visual que representa la varianza explicada por cada componente en orden descendente. El objetivo es identificar un punto de codo en la gráfica, donde la tasa de disminución de la varianza explicada se suaviza. Este punto sugiere el número óptimo de componentes.

Para generar un gráfico Scree:

import matplotlib.pyplot as plt

# Varianza explicada individual
varianza_explicada = pca_full.explained_variance_ratio_

# Gráfico Scree
plt.figure(figsize=(8, 5))
plt.plot(range(1, len(varianza_explicada) + 1), varianza_explicada, marker='o', linestyle='--')
plt.title('Gráfico Scree')
plt.xlabel('Componente Principal')
plt.ylabel('Varianza explicada')
plt.grid(True)
plt.show()

Al analizar el gráfico, se busca el componente donde la pendiente cambia significativamente, indicando que los componentes posteriores aportan menos a la explicación de la varianza.

3. Criterio de Kaiser

El criterio de Kaiser propone conservar únicamente los componentes principales cuyas autovalores sean mayores que 1. Este criterio se basa en la idea de que un componente debe explicar al menos la varianza que aporta una variable original estándar.

Para aplicar el criterio de Kaiser en Scikit-Learn:

# Autovalores (varianza explicada por cada componente sin normalizar)
autovalores = pca_full.explained_variance_

# Seleccionar componentes con autovalores mayores que 1
n_componentes_kaiser = np.sum(autovalores > 1)

print(f"Número óptimo de componentes según el criterio de Kaiser: {n_componentes_kaiser}")

Es importante destacar que este criterio es más apropiado cuando las variables originales están estandarizadas, lo cual es común en PCA.

4. Validación cruzada

La validación cruzada permite evaluar el rendimiento del PCA en términos de su capacidad para mejorar la generalización en tareas posteriores, como la clasificación o la regresión. Se busca el número de componentes que maximiza el rendimiento del modelo en datos no vistos.

Implementación de validación cruzada para seleccionar el número óptimo de componentes:

from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression

# Creamos un pipeline que incluye PCA y un clasificador
pipeline = Pipeline([
    ('pca', PCA()),
    ('clasificador', LogisticRegression())
], memory = None)

# Definimos el rango de componentes a evaluar
param_grid = {
    'pca__n_components': range(1, X_scaled.shape[1] + 1)
}

# Configuramos la búsqueda con validación cruzada
grid_search = GridSearchCV(pipeline, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_scaled, y)

# Obtenemos el número óptimo de componentes
n_componentes_cv = grid_search.best_estimator_.named_steps['pca'].n_components

print(f"Número óptimo de componentes según validación cruzada: {n_componentes_cv}")

En este ejemplo, se utiliza un GridSearchCV para probar diferentes valores de n_components y seleccionar aquel que proporciona la mejor precisión en la clasificación.

5. Método de Horn (Análisis Paralelo)

El Método de Horn compara los autovalores obtenidos del PCA con los autovalores esperados de datos aleatorios. Se conservan los componentes cuyos autovalores reales superan a los aleatorios. Aunque Scikit-Learn no tiene una implementación directa de este método, se puede emplear la librería paran para Python o implementarlo manualmente.

Ejemplo simplificado:

# Generar datos aleatorios con las mismas dimensiones
n_muestras, n_variables = X_scaled.shape
n_simulaciones = 100
autovalores_aleatorios = np.zeros((n_simulaciones, n_variables))

# Crear una instancia del generador de números aleatorios con una semilla
rng = np.random.default_rng(seed=42)

# Calcular los autovalores promedio de los datos aleatorios
autovalores_promedio = autovalores_aleatorios.mean(axis=0)

# Comparar con los autovalores reales
autovalores_reales = pca_full.explained_variance_

# Determinar el número óptimo de componentes
n_componentes_horn = np.sum(autovalores_reales > autovalores_promedio)

print(f"Número óptimo de componentes según el Método de Horn: {n_componentes_horn}")

Este método es más riguroso estadísticamente, pero también más complejo computacionalmente.

6. Información Bayesiana (BIC) y de Akaike (AIC)

Los criterios de Información Bayesiana (BIC) y de Akaike (AIC) pueden emplearse para seleccionar el número óptimo de componentes, minimizando estos indicadores. Sin embargo, la aplicación directa en PCA es menos común y suele requerir enfoques específicos o bibliotecas adicionales.

7. Consideraciones prácticas

Es esencial combinar los métodos anteriores con el conocimiento experto y la interpretabilidad de los componentes. A veces, conservar un número ligeramente mayor de componentes facilita la comprensión de los datos sin añadir complejidad excesiva.

Por ejemplo, si después de los análisis anteriores se sugiere conservar 3 componentes, pero el cuarto componente captura información relevante para el problema en estudio, puede ser beneficioso incluirlo.

Además, es importante tener en cuenta que en datasets con variables correlacionadas, los primeros componentes explicarán gran parte de la varianza, mientras que en datasets con estructuras más complejas, puede ser necesario conservar más componentes.

8. Implementación integrada en Scikit-Learn

Para simplificar el proceso, Scikit-Learn permite especificar directamente el criterio de varianza explicada acumulada al inicializar el PCA:

# Especificar que queremos explicar al menos el 90% de la varianza
pca_optimo = PCA(n_components=0.90)
X_pca_optimo = pca_optimo.fit_transform(X_scaled)

print(f"Número de componentes seleccionados automáticamente: {pca_optimo.n_components_}")

De esta forma, el PCA selecciona automáticamente el número de componentes que acumulan la proporción de varianza deseada.

9. Funcionamiento con datos nuevos

Es crucial asegurarse de que el número de componentes seleccionado generaliza bien a datos nuevos. Por ello, al implementar PCA en un Pipeline junto con modelos predictivos, se garantiza que la misma transformación aplicada en el ajuste se utiliza en la predicción.

Ejemplo de Pipeline con el número óptimo de componentes:

from sklearn.pipeline import make_pipeline

# Pipeline con escalado, PCA y clasificador
pipeline_final = make_pipeline(
    StandardScaler(),
    PCA(n_components=n_componentes_optimos),
    LogisticRegression(),
    memory = None
)

# Entrenamiento del modelo
pipeline_final.fit(X_train, y_train)

# Evaluación en datos de prueba
score = pipeline_final.score(X_test, y_test)
print(f"Precisión del modelo en datos de prueba: {score:.2f}")

10. Resumen de los métodos

Los diferentes enfoques para determinar el número óptimo de componentes ofrecen perspectivas complementarias. La varianza explicada acumulada y el gráfico Scree son métodos rápidos y visuales. La validación cruzada proporciona una evaluación basada en el rendimiento del modelo. Métodos estadísticos como el criterio de Kaiser y el Método de Horn aportan fundamentos teóricos adicionales.

La elección del método dependerá del contexto del problema, el tamaño del dataset y los objetivos del análisis. Es recomendable combinar varios métodos y considerar tanto aspectos cuantitativos como cualitativos para tomar una decisión informada.

Casos de uso de PCA

El Análisis de Componentes Principales (PCA) es una herramienta versátil que se emplea en diversos campos para abordar problemas de alta dimensionalidad y extraer información relevante de grandes conjuntos de datos. A continuación, se presentan algunos casos prácticos donde el PCA ha demostrado ser especialmente útil.

En el campo de la visión por computadora, el PCA se utiliza para la reconocimiento facial y la compresión de imágenes. Las imágenes digitales poseen miles o incluso millones de píxeles, lo que genera conjuntos de datos de muy alta dimensionalidad. Mediante el PCA, es posible reducir esta dimensionalidad conservando las características más significativas.

Por ejemplo, en el desarrollo de sistemas de reconocimiento facial, se pueden emplear las llamadas Eigenfaces, que son los componentes principales obtenidos a partir de un conjunto de imágenes de rostros. Estas Eigenfaces permiten representar cada rostro como una combinación lineal de componentes básicos, facilitando la comparación y clasificación de nuevas imágenes.

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

# Carga de datos de rostros
lfw_dataset = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
X = lfw_dataset.data
y = lfw_dataset.target
n_samples, n_features = X.shape

# Aplicación de PCA para obtener las Eigenfaces
n_components = 150
pca = PCA(n_components=n_components, svd_solver='randomized', whiten=True, random_state=42)
X_pca = pca.fit_transform(X)

# Visualización de las primeras Eigenfaces
fig, axes = plt.subplots(3, 5, figsize=(9, 6),
                         subplot_kw={'xticks':[], 'yticks':[]},
                         gridspec_kw=dict(hspace=0.5, wspace=0.5))
for i, ax in enumerate(axes.flat):
    if i < n_components:
        eigenface = pca.components_[i].reshape(lfw_dataset.images[0].shape)
        ax.imshow(eigenface, cmap='gray')
        ax.set_title(f'Comp. {i+1}')
plt.show()

En el ámbito de la bioinformática, el PCA es esencial para analizar datos de expresión génica. Los experimentos de microarrays y secuenciación producen datos con miles de genes (variables) y un número limitado de muestras. El PCA permite identificar patrones y genes clave que diferencian distintos estados biológicos, como la presencia o ausencia de una enfermedad.

Un caso práctico es el análisis de datos de expresión en pacientes con cáncer. Al aplicar PCA, se pueden detectar grupos de genes que contribuyen significativamente a la variabilidad entre muestras sanas y cancerosas, lo que facilita la identificación de biomarcadores.

En finanzas, el PCA se utiliza para la gestión de riesgos y el análisis de portafolios de inversión. Los mercados financieros presentan una gran cantidad de variables interrelacionadas, como precios de activos, tasas de interés y tipos de cambio. El PCA ayuda a identificar los factores subyacentes que influyen en el comportamiento de los activos, simplificando el análisis y la toma de decisiones.

Por ejemplo, al analizar el rendimiento de diferentes acciones, el PCA puede revelar que gran parte de la variabilidad se explica por unos pocos componentes relacionados con factores económicos generales, como el crecimiento del PIB o las tasas de interés.

En el área de la procesamiento de señales, el PCA es útil para la reducción de ruido en datos. Al conservar únicamente los componentes principales que capturan la mayor variabilidad, se puede reconstruir una versión de los datos con menor ruido.

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

# Generación de una señal senoidal con ruido

# Crear una instancia del generador de números aleatorios con una semilla
rng = np.random.default_rng(seed=42)

t = np.linspace(0, 1, 500)
signal = np.sin(2 * np.pi * 5 * t)
noise = 0.5 * rng.normal(size=t.shape)
noisy_signal = signal + noise

# Reconstrucción de la señal mediante PCA
X = noisy_signal.reshape(-1, 1)
pca = PCA(n_components=1)
X_pca = pca.fit_transform(X)
X_reconstructed = pca.inverse_transform(X_pca)

# Visualización de la señal original, con ruido y reconstruida
plt.figure(figsize=(10, 6))
plt.plot(t, signal, label='Señal original')
plt.plot(t, noisy_signal, label='Señal con ruido', alpha=0.5)
plt.plot(t, X_reconstructed, label='Señal denoised', linewidth=2)
plt.legend()
plt.xlabel('Tiempo')
plt.ylabel('Amplitud')
plt.title('Reducción de ruido con PCA')
plt.show()

En análisis de mercados y segmentación de clientes, el PCA se emplea para facilitar la visualización y comprensión de datos de comportamiento de consumidores. Al reducir la dimensionalidad, es posible representar los datos en dos o tres dimensiones, permitiendo identificar grupos y patrones que de otro modo serían difíciles de detectar.

Por ejemplo, una empresa puede utilizar PCA para analizar características como frecuencia de compra, monto gastado, preferencias de productos y canales de adquisición. Al proyectar estos datos en un espacio de menor dimensión, es más sencillo aplicar técnicas de clustering para segmentar la base de clientes.

En meteorología y climatología, el PCA es utilizado para analizar patrones de variabilidad en datos atmosféricos y oceánicos, como temperaturas, precipitaciones y corrientes marinas. Permite identificar fenómenos globales como el El Niño o patrones recurrentes que afectan al clima en diferentes regiones.

En química y espectroscopia, el PCA ayuda a interpretar datos espectrales complejos, facilitando la identificación de compuestos y análisis de muestras. Al reducir la dimensionalidad de los espectros, se pueden resaltar las diferencias entre muestras y correlacionarlas con propiedades físicas o químicas.

En el campo de la neurociencia, el PCA se utiliza para analizar datos de actividad cerebral obtenidos mediante técnicas como electroencefalografía (EEG) o resonancia magnética funcional (fMRI). La alta dimensionalidad y complejidad de estos datos hacen que el PCA sea esencial para extraer componentes que representen patrones de activación cerebral relacionados con tareas cognitivas o estados neurológicos.

En aprendizaje automático, el PCA es frecuentemente aplicado como paso previo a otros algoritmos, como en clustering, regresión o clasificación, mejorando la eficiencia computacional y reduciendo el riesgo de sobreajuste. Al disminuir el número de variables, se simplifica el modelo y se eliminan características redundantes o poco informativas.

Por ejemplo, en un problema de clasificación de dígitos escritos a mano, como el conjunto de datos MNIST, el PCA puede reducir el número de características de 784 a un número menor sin perder información crucial para distinguir entre dígitos.

from sklearn.datasets import fetch_openml
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Carga del conjunto de datos MNIST
mnist = fetch_openml('mnist_784', version=1)
X = mnist.data / 255.0
y = mnist.target

# División de los datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Aplicación de PCA para reducir dimensionalidad
pca = PCA(n_components=50)  # Reducir de 784 a 50 componentes
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

# Entrenamiento de un clasificador
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train_pca, y_train)

# Evaluación del modelo
y_pred = clf.predict(X_test_pca)
accuracy = accuracy_score(y_test, y_pred)
print(f'Precisión del modelo con PCA: {accuracy:.4f}')

En este ejemplo, se observa que el uso de PCA reduce significativamente la dimensionalidad, lo que puede disminuir el tiempo de entrenamiento y mejorar la generalización del modelo.

En procesamiento de lenguaje natural (NLP), el PCA se utiliza para reducir la dimensionalidad de representaciones vectoriales de palabras o documentos, como las obtenidas mediante técnicas de Bag of Words o TF-IDF. Esto facilita la visualización y el análisis de relaciones semánticas entre términos y documentos.

Es importante destacar que, aunque el PCA es una herramienta eficaz, su aplicación debe ser cuidadosa. En algunos casos, las transformaciones lineales pueden no capturar relaciones complejas en los datos, por lo que es necesario considerar técnicas alternativas o complementarias, como el t-SNE o el UMAP, para la reducción de dimensionalidad no lineal.

En resumen, el PCA es ampliamente utilizado en múltiples disciplinas para abordar desafíos relacionados con datos de alta dimensionalidad, facilitando el análisis, visualización y modelado de información compleja.

Aprende ScikitLearn GRATIS online

Ejercicios de esta lección Reducción de la dimensionalidad con PCA

Evalúa tus conocimientos de esta lección Reducción de la dimensionalidad con PCA con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de ScikitLearn

Accede a todas las lecciones de ScikitLearn y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Aprendizaje Automático

scikit-learn

Introducción Y Entorno

Introducción E Instalación

scikit-learn

Introducción Y Entorno

Introducción Al Preprocesamiento De Datos

scikit-learn

Preprocesamiento De Datos

Identificación Y Tratamiento De Valores Faltantes

scikit-learn

Preprocesamiento De Datos

Escalado De Datos

scikit-learn

Preprocesamiento De Datos

Normalización De Datos

scikit-learn

Preprocesamiento De Datos

Codificación De Variables Categóricas

scikit-learn

Preprocesamiento De Datos

Ingeniería De Características

scikit-learn

Preprocesamiento De Datos

Selección De Características

scikit-learn

Preprocesamiento De Datos

Extracción De Características

scikit-learn

Preprocesamiento De Datos

Particionamiento De Datos

scikit-learn

Preprocesamiento De Datos

Preprocesamiento De Datos Desbalanceados

scikit-learn

Preprocesamiento De Datos

Introducción A La Regresión

scikit-learn

Regresión

Regresión Lineal

scikit-learn

Regresión

Regresión Knn Kneighborsregressor

scikit-learn

Regresión

Regresión Svm Con Svr

scikit-learn

Regresión

Regresión Con Árboles Decisiontreeregressor

scikit-learn

Regresión

Regresión Con Algoritmos De Conjunto

scikit-learn

Regresión

Introducción A La Clasificación

scikit-learn

Clasificación

Clasificación Con Regresión Logística

scikit-learn

Clasificación

Clasificación Knn Kneighborsclassifier

scikit-learn

Clasificación

Clasificación Svm Con Svc

scikit-learn

Clasificación

Clasificación Con Árboles Decisiontreeclassifier

scikit-learn

Clasificación

Clasificación Con Algoritmos De Conjunto

scikit-learn

Clasificación

Reducción De La Dimensionalidad Con Pca

scikit-learn

Aprendizaje No Supervisado

Clustering Con Kmeans

scikit-learn

Aprendizaje No Supervisado

Clustering Jerárquico

scikit-learn

Aprendizaje No Supervisado

Clustering De Densidad Con Dbscan

scikit-learn

Aprendizaje No Supervisado

Preprocesamiento De Textos Para Nlp

scikit-learn

Nlp

Representación De Texto Y Extracción De Características

scikit-learn

Nlp

Clasificación De Texto Con Scikit Learn

scikit-learn

Nlp

Análisis De Sentimiento

scikit-learn

Nlp

Técnicas Avanzadas De Extracción De Características

scikit-learn

Nlp

Introducción Al Análisis De Series Temporales

scikit-learn

Series Temporales

Preprocesamiento De Datos De Series Temporales

scikit-learn

Series Temporales

Ingeniería De Características Para Series Temporales

scikit-learn

Series Temporales

Transformación Y Escalado De Series Temporales

scikit-learn

Series Temporales

Validación Y Evaluación De Modelos En Series Temporales

scikit-learn

Series Temporales

Validación Y Evaluación De Modelos

scikit-learn

Validación De Modelos

Técnicas De Validación Cruzada

scikit-learn

Validación De Modelos

Métricas De Regresión

scikit-learn

Validación De Modelos

Métricas De Clasificación

scikit-learn

Validación De Modelos

Ajuste De Hiperparámetros

scikit-learn

Validación De Modelos

Introducción A Pipelines

scikit-learn

Pipelines Y Despliegue

Creación De Pipelines Básicos

scikit-learn

Pipelines Y Despliegue

Preprocesamiento De Datos Con Pipelines

scikit-learn

Pipelines Y Despliegue

Pipelines Y Validación Cruzada

scikit-learn

Pipelines Y Despliegue

Pipelines Con Columntransformer

scikit-learn

Pipelines Y Despliegue

Exportar E Importar Pipelines

scikit-learn

Pipelines Y Despliegue

Accede GRATIS a ScikitLearn y certifícate

Objetivos de aprendizaje de esta lección

  • Comprender qué es la reducción de la dimensionalidad y su relevancia en el aprendizaje automático.
  • Conocer los fundamentos del Análisis de Componentes Principales (PCA) y sus requisitos.
  • Aprender a usar PCA en Scikit Learn para reducir la dimensionalidad de datos.
  • Saber interpretar los datos obtenidos tras aplicar PCA.
  • Determinar el número óptimo de componentes principales en PCA.
  • Identificar y comprender casos de uso prácticos de PCA.