No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Reducción de dimensionalidad con PCA

23/25
Recursos

Aportes 41

Preguntas 27

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Hola a todos, en esta clase en el minuto 10:57 cuando escribo nuevas columnas para las variables reducidas en realidad tenia que escribir:

iris['pca_1'] = reduced_scaled[:, 0]
iris['pca_2'] = reduced_scaled[:, 1]

para quelo tengan en cuenta, porque la idea erá usar ya las variables reducidas !

Me pareció brutal este curso, mucho más de lo que esperaba, y esta última parte de PCA lejos lo mejor, gran profesor Francisco Camacho

Hola, (SEP/22), el último bloque de código me generó un error, lo tuve que cambiar a:

iris['pca_1'] = reduced_scaled[:, 0]
iris['pca_2'] = reduced_scaled[:, 1]
sns.jointplot(x = iris['pca_1'], y= iris['pca_2'], hue=iris['species'])

¡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/ 😎.

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.

con la scala reducida

iris['pca_11'] = reduced_scaled[:,0]
iris['pca_22'] = reduced_scaled[:,1]
sns.jointplot(iris['pca_11'], iris['pca_22'], hue=iris['species'])

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

hay un error en el ultimo bloque de codigo

iris['pca_1'] = scaled[:,0]
iris['pca_2'] = scaled[:,1]
sns.jointplot(iris['pca_1'], iris['pca_2'], hue = iris['species'])

debe quedar asi

iris["pca_1"] = reduced_scaled[:, 0]
iris["pca_2"] = reduced_scaled[:, 1]
sns.jointplot(x = iris["pca_1"], y = iris["pca_2"], hue = iris["species"])

Con este curso te das cuenta que ya toca comerse un par de libros.

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.

Excelente curso, amé Deepnote.

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)

Una forma de eliminar el for en el minuto 6:23 es aprovechando el hecho de que las operaciones de los objetos de numpy se hacen sobre todos los componentes.

variance_explained = []
sumEigen = np.sum(eigen_values)
varianzaMatrix = ((eigen_values)/sumEigen)*100
varianzaMatrix

obteniendo el mismo resultado

Para complementar la implementación del algoritmo de PCA, el curso de machine learning con Scikit-Learn https://platzi.com/clases/1796-scikitlearn-ml/25647-introduccion-al-pca/ explicado de una manera muy práctica.

Qué excelente curso de Data Science, que lo que deja es ganar de aplicar todo lo aprendido y sobre todo nunca parar de aprender ❤️

  • Descomposion con Python

    utilizamos el metodo eig para la descomposion inmediata de los valores propios

    import numpy as np 
    import pandas as pd 
    import matplotlib.pyplot as plt
    import seaborn as sns
    from sklearn.preprocessing import StandardScaler
    
    iris = sns.load_dataset('iris')
    
    scaler = StandardScaler()
    scaled = scaler.fit_transform(
        iris[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']].values
        )
    
    covariance_matrix = np.cov(scaled.T)
    covariance_matrix
    
    eigen_values, eigen_vectors = np.linalg.eig(covariance_matrix)
    
    eigen_values
    
    eigen_vectors
    
    • Cada vector propio captan la mayor cantidad de varianza de los datos principales
  • PCA

    sklearn.decomposition.PCA

    from sklearn.decomposition import PCA
    
    pca = PCA(n_components=2)
    pca.fit(scaled)
    
    pca.explained_variance_ratio_
    
    

    Para iniciar la reducción

    variance_explained = []
    for i in eigen_values:
        variance_explained.append((i/sum(eigen_values))*100)
    
    print(variance_explained)
    
    // respuesta//
    
    [72.9624454132999, 22.850761786701725, 3.6689218892828612, 0.5178709107154993]
    
    reduced_scaled = pca.transform(scaled)
    
    iris['pca_1'] = scaled[:,0]
    iris['pca_2'] = scaled[:,1]
    sns.jointplot(iris['pca_1'], iris['pca_2'], hue = iris['species'])
    

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.

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.

variance_explained = []
for i in eigen_values:
    variance_explained.append((i/sum(eigen_values))*100)

print(variance_explained)

Hay conceptos avanzados explicados tan rapido que son confusos.

Seria optimo usar reduced_scaled, asi se ve como lo dejo el profe y como seria con esta otra matriz

Cuantos datos ahorre y cuanto ahorre de tiempo en mi modelo??

Excelente curso!! Me ha aclarado muchísimas dudas y cosas que pasaba por alto con respecto a pre procesamiento de los datos. Muchísimas gracia profe por las explicaciones!!! Curto TOP TOP TOP!

Wow todas las capacidades que yiene Sklearn con PCA

Execelente curso. Gran aporte fueron las ultimas clases para comprender como se preparan los datos para luego entrenar un Modelo de Maching Learning

El minuto 8 en adelante es confuso en la explicación del PCA

Gran curso!!! 😄

Muy interesante el curso. Practicaré para afianzar lo aprendido.
Este curso es demasiado bueno, enserio puede entender todo, aunque también use copilot para que me explique ciertas cosistas que no terminaba de entender en cuanto a código, pero en cuanto a la teoría si lo entendí. Muchas gracias profe Francisco Camacho por tan buena calidad de enseñanza.
Si les ha pasado, el gráfico me marcaba error y me ha tocado modificarlo de la siguiente manera: ```js sns.jointplot(data = iris, x='pca_1', y='pca_2', hue ='species') ``` ![](https://static.platzi.com/media/user_upload/Sin%20t%C3%ADtulo-c417c2a3-d96f-4518-897a-8828328efd18.jpg) Siento que con esta forma ahora es más fácil hacer un algoritmo de clasificación

En este ejercicio, se puede ver que la ejecucion del ejercicio es correcta y para obtener lo que se desea. Es necesario, mostrar el contenido sin ningun problema.

Se me ocurrio hacer la matriz de correlacion de las variables seleccionadas y las nuevas pca\_1.Lo que note es que pca\_1 y pca\_2 son ortogonales! Lo que indica que lo que la info contenida en pca\_1 es excluyente de la info que expresa pca\_2. Y es logico, porque pca\_1 trata de maximizar el uso de las 4 columnas y pca\_2 hace lo propio! ![](https://static.platzi.com/media/user_upload/image-81dfd6f4-3d75-43dd-a093-bd4f5097cc64.jpg)
Siento que me queda una duda de cómo se realiza la transformación de 4 variables a 2, sería bastante interesante conocer a fondo qué elementos matemáticos usa Python para realizar esta transformación
¿Por qué la función scaled tiene los criterios \[:,2 ] o\[:.3] ?

Gran resumen del Profe!

muy buen curso esperamos hagan otro profundizndo estos temas

Muy importante para entender la diferencias entre los datos y dando mayor peso a las varianzas más fuertes

Excelente curso!

Asi fue como lo presento el profe

iris['pca_1'] = scaled[:,0]
iris['pca_2'] = scaled[:,1]
sns.jointplot(iris['pca_1'], iris['pca_2'], hue=iris['species'])