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 Batch K-Means

27

Implementación de Mean-Shift

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

No tienes acceso a esta clase

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

El problema de los valores atípicos

17/37
Recursos

Aportes 14

Preguntas 0

Ordenar por:

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

también esta el paquete seaborn para hacer los boxplot.

import seaborn as sns
sns.boxplot(hearth.sex, hearth.chol, hue = hearth.target)

Si quieren visualizar rápidamente para su dataset los datos atípicos. Pandas permite hacer con facilidad. Dejo el código para el caso del dataset hearth. Claramente se debe entender que para las variables indicadoras no tendría mucho sentido considerarlo.

num_features = hearth[['age', 'trestbps', 'thalach', 'oldpeak']]
num_features

plt.figure(figsize=(10,7))
num_features.boxplot(grid=False)

Clase 17: El problema de los valores atípicos

  • Un valor atípico es cualquier medición que se encuentre por fuera del comportamiento general de una muestra de datos.
  • Pueden indicar variabilidad, errores de medición o novedades.

¿Por qué son problemáticos?

1.- Pueden generar sesgos importantes en los modelos de ML.

2.- A veces contienen información relevante sobre la naturaleza de los datos.

3.- Detección temprana de fallos.

¿Cómo identificarlos?

A través de métodos estadísticos:

  1. Z - Score: Mide la distancia (en desviaciones estándar) de un punto dado a la media.
  2. Técnicas de clustering como DBSCAN.
  3. Si q< Q1-1.5IQR ó q > Q3+1.5IQR

El grafico de caja de una buena forma para detectar los valores atípicos en un set de datos, a su vez también es aconsejable (dependiendo del caso) eliminarlos para que nuestro análisis sea lo más confiable posible.

Me explicó, si sabemos que el promedio de autos que cruza una calle x de cuadra a cuadra es de aproximadamente de 10 segundos, un auto que tenga un tiempo de 100 segundo o de 10 minutos, claramente nos está indicando que tenemos un problema con ese dato.

Los datos atipicos, son muy crueles con los modelos lieneales, o que se midan con distancia. En solociones tipo tree, no le importa tanto los atipicos, ni los valores null. Los arboles son mero amor

Este es el mejor profesor de platzi hasta ahora.

Qué onda 👋, les comparto mi análisis. * cluster map (Pearson) con todas las columnas menos rank: ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-07-01%20a%20la%28s%29%2011.39.03a.m.-718a23b6-2fc7-4566-9bf4-5c749066b078.jpg) * histograma + iqr, indicando las medias y las medianas de las 6 columnas con mayor correlación: ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-07-01%20a%20la%28s%29%2011.38.48a.m.-b32f7e59-df47-451b-af28-77fdc655c6f9.jpg) El dataset que estuve utilizando es del 2023.

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) es un algoritmo de agrupamiento que también se puede utilizar para identificar datos atípicos. A diferencia de los Z-scores, DBSCAN se basa en la densidad de los puntos de datos en el espacio para identificar áreas densas de puntos y puntos aislados que se considerarán atípicos.

Aquí tienes un ejemplo para ilustrar el uso de DBSCAN en la identificación de datos atípicos:

from sklearn.cluster import DBSCAN
import numpy as np

# Datos de ejemplo (coordenadas x, y)
data = np.array([[1, 1], [1, 2], [2, 2], [8, 7], [8, 8], [25, 80]])

# Crear objeto DBSCAN y ajustar el modelo
dbscan = DBSCAN(eps=3, min_samples=2)
dbscan.fit(data)

# Obtener las etiquetas de los clusters y los valores únicos
labels = dbscan.labels_
unique_labels = np.unique(labels)

# Identificar los índices de los datos atípicos (etiqueta -1)
outlier_indices = np.where(labels == -1)[0]

# Imprimir los resultados
print("Etiquetas de los clusters:", labels)
print("Datos atípicos:", data[outlier_indices])

En este ejemplo, los datos de ejemplo son coordenadas bidimensionales (x, y) que representan puntos en un espacio. Utilizamos DBSCAN con un valor de eps=3 para especificar la distancia máxima entre dos puntos para considerarlos vecinos y min_samples=2 para especificar el número mínimo de puntos necesarios para formar un clúster.

El algoritmo DBSCAN asigna etiquetas a los puntos de datos, donde -1 representa los datos atípicos. Utilizamos np.where para identificar los índices de los datos atípicos basados en la etiqueta -1 y luego los extraemos de los datos originales.

Al ejecutar el código, obtendrás las etiquetas de los clusters asignadas por DBSCAN y los datos atípicos identificados.

Recuerda que los resultados de DBSCAN pueden depender de los parámetros eps y min_samples, por lo que es importante ajustarlos adecuadamente para tu conjunto de datos específico.

n_cols = len(dt_heart.columns)
plt.figure(figsize=(10,50))
for i, col in enumerate(dt_heart.columns):
    
    plt.subplot(n_cols,2,2*i+1)
    sns.boxplot(data=dt_heart[col])
    plt.subplot(n_cols,2,2*i+2)
    sns.violinplot(data=dt_heart[col])
Use este código para mostrar el **IQR**: ```python import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # Generar un conjunto de datos con más variabilidad y outliers np.random.seed(42) valores = np.random.normal(loc=50, scale=10, size=100) # Generar datos normales outliers = np.array([10, 120, 5, 150, 100]) # Algunos outliers artificiales data = np.concatenate([valores, outliers]) # Crear el DataFrame df = pd.DataFrame(data, columns=['valores']) # Crear el Boxplot horizontal y cambiar el color a verde esmeralda plt.figure(figsize=(10, 6)) sns.boxplot(data=df, x='valores', color='mediumseagreen') # Título y etiquetas plt.title('Detección de Outliers con Boxplot (IQR)', fontsize=14) plt.xlabel('Valores') # Mostrar el gráfico plt.show() ```![](https://static.platzi.com/media/user_upload/image-ba748fb5-4361-4e15-9eac-7217a2c75076.jpg)
Tengo una duda, realizando el box plot con la columna "family" no logro ubicar las lineas con las ecuaciones * q1 -1.5\*iqr * q3 +1.5\*iqr ![](https://static.platzi.com/media/user_upload/box-9316080c-b53d-4c1a-9fd7-d830ed5bcd30.jpg) ![](https://static.platzi.com/media/user_upload/code-49285361-13b6-45d2-a04c-4d208cdd6339.jpg)

Un valor atípico, también conocido como valor extremo u atípico, es una observación en un conjunto de datos que difiere significativamente de los demás valores en términos de magnitud o distribución. Los valores atípicos pueden ser valores excepcionalmente altos o bajos en comparación con los demás puntos de datos en el conjunto. Son problemáticos porque pueden distorsionar las estadísticas y los resultados de análisis, así como influir negativamente en la precisión y la interpretación de los modelos de machine learning y estadísticas.

Los valores atípicos pueden ser problemáticos por varias razones:

  • Distorsionan Estadísticas

  • Impacto en Modelos

  • Modelos Sensibles

  • Errores en Interpretación

  • Ruido en Datos

Algunos métodos estadísticos comunes para identificar valores atípicos son:

  • Z-Score

  • DBSCAN (Agrupación espacial basada en densidad de aplicaciones con ruido) :

  • Criterio de Tukey
    Este criterio se basa en el rango intercuartil (IQR). Si un punto de datos está por debajo de Q1 - 1.5 * IQR o por encima de Q3 + 1.5 * IQR, se considera un valor atípico.

La elección del método depende del contexto y la naturaleza de los datos. Es importante utilizar múltiples métodos y herramientas visuales para identificar y confirmar la presencia de valores atípicos antes de tomar decisiones sobre su tratamiento.

Esta sección es muy importante, muchas veces no los iedentificamos y trabajamos incluyendolos, los cuales nos genera información falsa

🤓Hice un video y lo cargue en youtube donde pueden ver el proceso de eliminación de valores atípicos, con la metodología que el profe explica en el video.👀

https://www.youtube.com/watch?v=gc1y-r6hzG4&t=2626s