¿Qué es el Análisis de Componentes Principales (PCA) y cómo se utiliza en Python?
El Análisis de Componentes Principales (PCA, por sus siglas en inglés) es una técnica de reducción de dimensionalidad que permite simplificar conjuntos de datos complejos. Al identificar las direcciones en las que se captura la mayor cantidad de varianza de los datos, el PCA facilita reducir el número de variables necesarias para representar los datos sin perder información esencial. Esta capacidad de simplificar el conjunto de datos resulta invaluable al preparar datos para ser procesados por modelos de machine learning, especialmente cuando se trabaja con grandes volúmenes de información.
¿Cómo implementamos PCA en un proyecto con Python?
Para ilustrar la aplicación del PCA en Python, trabajaremos con el dataset Iris en un entorno llamado DeepNote, utilizando librerías populares como NumPy y Scikit Learn. A continuación, detallamos el proceso:
Importación y escalamiento de datos:
Usamos StandardScaler de Scikit Learn para escalar las cuatro columnas numéricas del dataset Iris, asegurando que los datos tengan un promedio cero y una desviación estándar de uno.
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()X = iris.data
scaler = StandardScaler()X_scaled = scaler.fit_transform(X)
Cálculo de la matriz de covarianza:
La matriz de covarianza se construye a partir de los datos escalados, permitiendo el cálculo de vectores y valores propios.
import numpy as np
covariance_matrix = np.cov(X_scaled.T)
Descomposición utilizando NumPy:
Usamos np.linalg.eig para obtener los vectores y valores propios de la matriz de covarianza, identificando direcciones principales de varianza.
Calculamos la proporción de varianza que cada componente principal captura dividiendo el valor propio de cada componente por la suma de todos los valores propios.
variance_explained =[(i /sum(eigen_values))*100for i in eigen_values]
¿Cómo transforma PCA los datos reales?
Después de calcular los vectores y valores propios, se transforma el conjunto de datos original a este nuevo espacio de componentes principales utilizando Scikit Learn:
Inicialización y ajuste del modelo PCA:
from sklearn.decomposition import PCA
pca = PCA(n_components=2)X_pca = pca.fit_transform(X_scaled)
Análisis de la varianza capturada:
Podrás verificar la proporción de la varianza total que las nuevas componentes principales capturan. Esto asegura que el modelo captura la información relevante de los datos originales.
print(pca.explained_variance_ratio_)
Visualización de datos reducidos:
Finalmente, podemos visualizar la distribución de los datos utilizando un diagrama de dispersión a dos dimensiones.
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
iris_df = pd.DataFrame(data=X, columns=iris.feature_names)iris_df['species']= iris.target
iris_df['PCA1']= X_pca[:,0]iris_df['PCA2']= X_pca[:,1]sns.scatterplot(x='PCA1', y='PCA2', hue='species', data=iris_df)plt.show()
Importancia y recomendaciones para aplicar PCA
La aplicación del PCA es fundamental en el preprocesamiento de datos en ciencia de datos. Al reducir la dimensionalidad, no solo optimizamos el rendimiento de los modelos de machine learning, sino que también evitamos problemas de sobreajuste, especialmente cuando trabajamos con conjuntos de datos ruidosos o altamente correlacionados.
Cuándo usar PCA:
Cuando el conjunto de datos tiene muchas variables.
Si las variables están correlacionadas.
Para mejorar el rendimiento computacional.
Cuidado con PCA:
Aunque el PCA es poderoso, implica una pérdida de información. Se debe evaluar cuidadosamente cuánta varianza se está dispuesto a sacrificar.
Al final, el objetivo del PCA es facilitar el camino hacia modelos más eficientes y precisos, al tiempo que conservamos la esencia y la calidad de la información original. Al dominar técnicas como el PCA, los estudiantes y profesionales están mejor equipados para enfrentar desafíos complejos en la ciencia de datos. Mantén la curiosidad y sigue explorando, cada paso que das te acerca más a convertirte en un experto en el campo.
genio gracias!! me pasó lo mismo y no me daba cuenta cómo resolverlo! :)
muchas gracias compañero
¡Excelente explicación y que belleza de curso 💚! En mis clases de econometría basica y media no llegué a ver la reducción de dimensionalidad, pero veo que es muy importante para entrenar los modelos. Me voy muy contento a tomar el siguiente paso: https://platzi.com/cursos/algebra-lineal/ 😎.
Excelente compañero me alegra vernos en la final del curso !!
bravo y aplaudo tu culminación de este curso, que estuvo bueno si, pero no se profundiza mucho que digamos, toca revisar las fuentes, pero no es grave.!!! fuera de todo el profesor enseña y se esfuerza en explicar en lo que puede, sigamos adelante!!
Si bien ya había trabajado con pipelines en Data Science & Machine Learning crudos, desde 0 hasta entrenar un modelo de ML, ese curso me esclareció aún más las cosas.
Me encantó la forma en que le dio hincapié el Profe Pacho a que la estadística y otras ramas de las mates que están implícitas en el mundo de la Ciencia de datos.
En realidad, estos son los datos que se debieron incluir al dataset iris. Es un error del profe.
Simplemente brutal, más cursos con este profesor por favor!
Creo que más adelante tendré que regresar porque aún no lo domino bien. Pero explicas super bien!
En la imagen de la izquierda, cada punto es un registro de la tabla de entrada que se representa en dos dimensiones con los valores de los dos campos de análisis en los ejes x e y. La longitud de los ejes azules representa la varianza de cada una de las dos variables. Las longitudes de las dos flechas azules son aproximadamente iguales, lo que indica que las dos variables tienen una varianza aproximadamente igual.
En la imagen central, los ejes se han rotado para representar mejor la relación lineal entre las variables. Uno de los ejes verdes es ligeramente más largo que el otro, lo que indica más varianza en esa dirección.
Sin embargo, esta rotación no es óptima. La imagen de la derecha muestra la rotación óptima encontrada por PCA que se alinea con la relación lineal entre las variables. Esta rotación produce un eje rojo con la mayor cantidad de varianza. El eje rojo más grande corresponde al primer componente principal y es la mejor representación en una sola dimensión de los datos bidimensionales. En las tres imágenes, la varianza total de las variables originales es la misma, pero la imagen de la derecha ha asignado la mayor cantidad posible de varianza al primer componente, lo que deja la menor cantidad posible de varianza restante para el segundo com
apenas me gradue el año pasado, me esta explotando un poco el cerebro. ¿alguien puede recomendarme lecturas para entender mejor este tema?
Entendí hasta la clase 20, luego no entiendo nada. Mi enfoque es ingeniero de datos y esto me dice que Machine learning no es lo mío.
Me pasó lo mismo :( hay que estudiar más ppara afianzar más conocimientos. Mi enfoque es análisis de datos pero es interesante aprender más sobre la ciencia de datos.
uff hermano estamos en la misma, voy para analisis de datos pero esto sirve como un abre bocas de lo que es el machine learning, al menos sabemos cosas que no sabiamos y que si la necesitamos ya sabemos que existe
Con este curso te das cuenta que ya toca comerse un par de libros.
X2
Realmente este curso es uno de los mejores y fundamental en esta ruta de aprendizaje para data science, y ademas muestra la importancia de bases estadísticas, matemáticas. gracias profe!!! buen curso.
Hola a todos, les pido si me pueden ayudar entendiendo la linea sns.jointplot(x = scaled[:, 2], y = scaled[:,3]) que significa el [:, 2] y [:, 3]
Muchas Gracias
[filas, columnas]
: #toma todas las filas
,2 #toma la tercer columna
[:,2] # toma todas las filas de la 3er columna
Está indicando que va a tener en cuenta para los gráficos , todas las filas de las columnas 2 y 3, es decir; de las columnas de 'sepal_length' , y 'petal_length' de la data iris.
Excelente curso, amé Deepnote.
Este curso fue excelente, entendí la importancia de los fundamentos matematicos, en especial algebraicos para el mundo de la ciencia de datos.
Gran profesor Francisco, calmado y claro en sus explicaciones.
Ahora a profundizar más sobre todo este tema.
Un super curso que te permite ver la manera de procesar los datos. La explicacion del profesor es muy buena y entendible. Ahora queda aplicar lo aprendido. Nunca dejes de practicar, nunca dejes de aprender.
Qué excelente curso de Data Science, que lo que deja es ganar de aplicar todo lo aprendido y sobre todo nunca parar de aprender <3
Información resumida de esta clase
#EstudiantesDePlatzi
El fin de todo esto es analizar que datos tienen alguna correlación y ver como puedo reducir mis categorías para darle al modelo un número menor de datos con que trabajar
Es importante estandarizar nuestros datos en una misma escala
En la librería de Sklearn existe una función o método llamado PCA que me ayuda a reducir los datos rápidamente
Debemos practicar la reducción de los datos
La estadística descriptiva se usa bastante en esta etapa de los datos
Este curso me hizo sentir que ya estoy entrando en materia. B)