Aprender los conceptos clave

1

Todo lo que aprenderás sobre MA con Scikit-Learn

2

¿Cómo aprenden las máquinas?

3

Problemas que podemos resolver con Scikit-learn

4

Las matemáticas que vamos a necesitar

Iniciar un proyecto con sklearn

5

Configuración de nuestro entorno Python

6

Instalación de librerías en Python

7

Datasets que usaremos en el curso

Optimización de features

8

¿Cómo afectan nuestros features a los modelos de Machine Learning?

9

Introducción al PCA

10

Preparación de datos para PCA e IPCA

11

Implementación del algoritmo PCA e IPCA

12

Kernels y KPCA

13

¿Qué es la regularización y cómo aplicarla?

14

Implementación de Lasso y Ridge

15

Explicación resultado de la implementación

16

ElasticNet: Una técnica intermedia

Regresiones robustas

17

El problema de los valores atípicos

18

Regresiones Robustas en Scikit-learn

19

Preparación de datos para la regresión robusta

20

Implementación regresión robusta

Métodos de ensamble aplicados a clasificación

21

¿Qué son los métodos de ensamble?

22

Preparación de datos para implementar métodos de ensamble

23

Implementación de Bagging

24

Implementación de Boosting

Clustering

25

Estrategias de Clustering

26

Implementación de Mean-Shift

27

Implementación de Batch K-Means

Optimización paramétrica

28

Validación de nuestro modelo usando Cross Validation

29

Implementación de K-Folds Cross Validation

30

Optimización paramétrica

31

Implementación de Randomized

32

Bonus: Auto Machine Learning

Salida a producción

33

Revisión de nuestra arquitectura de código

34

Importar y exportar modelos con Sklearn

35

Creación de una API con Flask para el modelo

36

Cierre del curso

37

Material adicional para consultar

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Preparación de datos para PCA e IPCA

10/37
Recursos

Aportes 13

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Les dejo el código comentado, por si no les corre compañeros:

# Importamos las bibliotecas generales
 
import pandas as pd
import sklearn
import matplotlib.pyplot as plt 
 
# Importamos los módulos específicos
 
from sklearn.decomposition import PCA
from sklearn.decomposition import IncrementalPCA
 
from sklearn.linear_model import LogisticRegression
 
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
 
if __name__ == "__main__":
 
   # Cargamos los datos del dataframe de pandas
   dt_heart = pd.read_csv('data/heart.csv')
 
   # Imprimimos un encabezado con los primeros 5 registros
   print(dt_heart.head(5))
 
   # Guardamos nuestro dataset sin la columna de target
   dt_features = dt_heart.drop(['target'], axis=1)
   # Este será nuestro dataset, pero sin la columna
   dt_target = dt_heart['target']
 
   # Normalizamos los datos
   dt_features = StandardScaler().fit_transform(dt_features)
  
   # Partimos el conjunto de entrenamiento. Para añadir replicabilidad usamos el random state
   X_train, X_test, y_train, y_test = train_test_split(dt_features, dt_target, test_size=0.3, random_state=42)

Definitivamente me gusta más Jupyter Notebook o Google Collab Jajaja

La estandarizacion que hace sklearn con StandardScaler es:
z = x-u / s
u:media
s:desviacion estandar

No me quedó muy claro lo de random_state, en cursos anteriores entendía que se debía desactivar para no arrojar valores aleatorios. También me cuestiono, porque razón X_train usa mayúscula y y_train usa minúscula? supongo que es convención pero no comprendo la razón.

¿Alguna vez se han preguntado por qué en ML la “X” se escribe en mayúsculas y la “y” en minúsculas?

Este es el motivo:

Fuente: Introduction to Machine Learning with Python, de Andreas C. Müller & Sarah Guido

100% recomendado ese libro 😄

¿Qué es normalizar los datos en ML?

Para que funcionen mejor muchos algoritmos de Machine Learning usados en Data Science, hay que normalizar las variables de entrada al algoritmo. Normalizar significa, en este caso, comprimir o extender los valores de la variable para que estén en un rango definido. Sin embargo, una mala aplicación de la normalización, o una elección descuidada del método de normalización puede arruinar tus datos, y con ello tu análisis.

Ejemplo visto en clase:

Escalado estándar (Standard Scaler)

Una alternativa al escalado de variables es usar otra técnica conocida como escalado estándar (a cada dato se le resta la media de la variable y se le divide por la desviación típica).


Éste método funcionaría para normalizar la señal de la fibra óptica del ejemplo anterior, conservando su forma, pero, ¿qué pasará con otras señales?. Los dos estadísticos que se usan (media y desviación típica) son muy sensibles a valores anómalos (muy grandes o muy pequeños con respecto al resto).

Imaginemos otro ejemplo. Vamos a medir cuánto se usa la palabra “resaca” en publicaciones de Facebook (datos reales). La frecuencia de uso de esta palabra tiene picos durante el fin de semana y valles entre semana. Los datos tienen valores anormalmente altos en fiestas como Halloween y Navidad.

Antes de normalizar, calculamos la media (5.55) y la desviación típica (10.53). Ya podemos ver que la media está en torno a 5, cuando nuestros datos sin anomalias no pasan de valores en torno al 4 (mala señal). Si aplicamos ahora la normalización estándar, tenemos lo siguiente.

Lo primero que vemos es que no hemos conseguido normalizar entre 0-1 con este método. Además ahora tenemos valores negativos, cuando antes no los teníamos. Por si esto fuera poco, nuestros valores pico y valle han quedado muy atenuados por culpa de las anomalías. Una solución a esto sería eliminar las anomalías antes de normalizar (tema para otro post).

Análisis similares se puede hacer para otros métodos de normalización: escalar sobre máximo, normalizer, escalado robusto, etc. Puedes consultar una versión extendida de este análisis en este enlace.


Bibliografía:

.

import pandas as pd
import sklearn 
import matplotlib.pyplot as plt

from sklearn.decomposition import PCA
from sklearn.decomposition import IncrementalPCA

from sklearn.linear_model import LogisticRegression

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

if __name__ == "__main__":
    dt_heart = pd.read_csv('./data/heart.csv')

    print(dt_heart.head(5))

    dt_features  = dt_heart.drop(['target'], axis=1)
    dt_target = dt_heart['target']

    dt_features = StandardScaler().fit_transform(dt_features)

    X_train, X_test, y_train, y_test = train_test_split(dt_features, dt_target, test_size=0.3, random_state=42)```

El valor para “random_state” puede ser cualquier número, sin embargo casi siempre se utiliza el número 42. Aparentemente el número “42” fue elegido como un tributo a “Hitch-hiker’s Guide” de Douglas Adams, ya que supuestamente era la respuesta a la gran pregunta de “La vida, el universo y todo” calculada por una super computadora con inteligencia artificial creada específicamente para resolver este misterio.
https://www.youtube.com/watch?v=tK0urw144cU

Buena explicación la de este profesor.

No me parece buena idea dar estos curos en Visual Studio. Principalmente porque no te das cuenta oportunamente dónde está el error, tampoco puedes correr varias celdas a la vez para ir comparando, para explorar, para entender mejor el código.

Normalizar con un scaler.

Mi codigo en un NoteBook en git hub

Para los que están en Linux, en Linux tenemos que poner el punto en el '.data/heart.csv
No así:

dt_heart = pd.read_csv('.data/heart.csv')

Sino, así:

dt_heart = pd.read_csv('data/heart.csv')

O les saldrá este espantoso error 😱:

Nota: La última ejecución ya fue sin el punto y la antepenúltima fue con punto, jejeje.