CursosEmpresasBlogLiveConfPrecios

Tratamiento de variables categóricas para imputación: one-hot encoding

Clase 7 de 17 • Curso de Manejo de Datos Faltantes: Imputación

Clase anteriorSiguiente clase

Contenido del curso

Problemática de valores faltantes
  • 1
    El problema de trabajar con valores faltantes

    El problema de trabajar con valores faltantes

    10:56
  • 2
    Proceso de análisis y limpieza de datos

    Proceso de análisis y limpieza de datos

    13:19
  • 3
    Visualizar y eliminar valores faltantes

    Visualizar y eliminar valores faltantes

    08:19
  • 4
    Implicaciones de los distintos tipos de valores faltantes

    Implicaciones de los distintos tipos de valores faltantes

    09:43
  • 5
    Amplía tu conjunto de herramientas para explorar valores faltantes

    Amplía tu conjunto de herramientas para explorar valores faltantes

    11:55
  • 6
    Tratamiento de variables categóricas para imputación: codificación ordinal

    Tratamiento de variables categóricas para imputación: codificación ordinal

    15:59
  • 7
    Tratamiento de variables categóricas para imputación: one-hot encoding

    Tratamiento de variables categóricas para imputación: one-hot encoding

    12:51
  • 8
    Métodos de imputación de valores faltantes

    Métodos de imputación de valores faltantes

    04:41
Imputación basada en el donante
  • 9
    Imputación por media, mediana y moda

    Imputación por media, mediana y moda

    10:22
  • 10
    Imputación por llenado hacia atrás y hacia adelante

    Imputación por llenado hacia atrás y hacia adelante

    09:20
  • 11
    Imputación por interpolación

    Imputación por interpolación

    11:46
  • 12
    Imputación por KNN

    Imputación por KNN

    04:34
  • 13
    Imputación por KNN en Python

    Imputación por KNN en Python

    12:01
Imputación basada en modelos
  • 14
    Introducción a la imputación basada en modelos

    Introducción a la imputación basada en modelos

    13:27
  • 15
    Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)

    Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)

    13:05
Conclusión
  • 16
    Transformación inversa de los datos

    Transformación inversa de los datos

    07:07
  • 17
    ¿Cómo continuar practicando?

    ¿Cómo continuar practicando?

    03:09
    Andres Sanchez

    Andres Sanchez

    student•
    hace 2 años

    7. Tratamiento de variables categóricas para imputación: one-hot encoding

    5-10-20 categorias → Ordinal encoding

    100-1000-2000-3000 categorias → One Hot Encoding

    1. Ordinal Encoder: El OrdinalEncoder se utiliza cuando existe un orden o jerarquía natural entre las categorías de una variable categórica. Esto significa que las categorías tienen una relación de orden y se pueden asignar valores numéricos que reflejen este orden. Algunos ejemplos de variables categóricas donde se puede aplicar el OrdinalEncoder son:
      • Niveles de educación: como "Primaria", "Secundaria", "Universidad", donde hay un orden lógico de menor a mayor nivel educativo.
      • Evaluaciones de rendimiento: como "Bajo", "Medio", "Alto", donde hay una escala ordinal de bajo a alto rendimiento.
    2. One-Hot Encoder: El OneHotEncoder se utiliza cuando no existe un orden o jerarquía natural entre las categorías de una variable categórica, y se desea crear variables binarias para cada categoría. Esto permite representar cada categoría como una columna independiente, donde un valor de 1 indica la presencia de esa categoría y un valor de 0 indica la ausencia. Algunos ejemplos de variables categóricas donde se puede aplicar el OneHotEncoder son:
      • Colores: como "Rojo", "Verde", "Azul", donde cada color se representa como una columna separada en el conjunto de datos codificado en caliente.
      • Países: como "Estados Unidos", "Canadá", "México", donde cada país se representa como una columna separada indicando su presencia o ausencia.
      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      Excelente, muchas gracias!

    Jeinfferson Bernal G

    Jeinfferson Bernal G

    student•
    hace 3 años

    One - Hot Encoding

    Consiste en crear una matriz de unos y ceros donde el 1 representa la presencia de una caracteristica o categoria de la variable de interes y 0 la ausencia de la misma. La lista se convierte en un formato ancho de manera que cada columna representa un elemento unico de nuesta categoria.

    Untitled (4).png

    Existen dos metodos para generar un one hot encoding: pandas.get_dummies() y sklearn.preprocessing.OneHotEncoder()

      Julián Cárdenas

      Julián Cárdenas

      student•
      hace 2 años

      Buen resumen!

      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      Excelente:!

    Jeinfferson Bernal G

    Jeinfferson Bernal G

    student•
    hace 3 años

    Metodo con Sklearn

    • Creamos el transformador
    # funcion para construir los transformadores requeridos transformer = sklearn.compose.make_column_transformer( # transformacion ordinal variable categorica (sklearn.preprocessing.OrdinalEncoder(), ['gender']), # transformacion one hot variable categorica (sklearn.preprocessing.OneHotEncoder(), ['general_health_condition']), remainder='passthrough' # omision de la transformacion de las demas variables )
    • Dataframe con los valores transformados
    nhanes_transformed_df2 = ( pd.DataFrame( transformer.fit_transform(nhanes_df), columns=transformer.get_feature_names_out(), index=nhanes_df.index # indices del dataframe original ) .rename_columns( function = lambda x: x.removeprefix('ordinalencoder__') ) .rename_columns( function = lambda x: x.removeprefix('remainder__') ) .rename_columns( function = lambda x: x.removeprefix('onehotencoder__') ) ) nhanes_transformed_df2
    Untitled (7).png
    • Acceder a las categorias de health
    ( transformer .named_transformers_ .get('onehotencoder') .categories_ ) --> [array(['Excellent', 'Fair or', 'Good', 'Poor?', 'Very good', nan], dtype=object)]
    • Extraer solo una categoria
    # Para este caso extraer Good ( transformer .named_transformers_ .get('onehotencoder') .inverse_transform( X = [[0,0,1,0,0,0]] # vector que representa la categoria Good ) ) --> array([['Good']], dtype=object)
    José Rodrigo Arana Hi

    José Rodrigo Arana Hi

    student•
    hace 2 años

    ¿Cuál método debería de utilizar?

    Depende mucho del contexto en el que nos encontremos trabajando:

    • Si tengo 5, 10 o más categorías, quizá un ++Ordinal Encoding++ sería la opción, en la que establecemos un número para cada una de ellas.
    • Si tengo 100 o más categorías, quizá un ++OneHot Encoding++ sería una mejor opción, porque voy a tener una categoría por cada columna. Cada una va a tener 1 y 0, entonces el peso de estas variables va a ser el mismo. El inconveniente en este caso es que vas a necesitar crear una nueva columna para cada instancia de tu variable, por lo que requerirás mucho espacio. Esto se puede solventar utilizando matrices especiales matrices sparse.

    Dependiendo de tus recursos y métodos que utilices puede ser viable o no.

    Bryan Carvajal

    Bryan Carvajal

    student•
    hace 3 años

    Me lanza este error cuando pongo el siguiente comando, alguna idea de porque pasa esto?

    nhanes_transform_df2 = ( pd.DataFrame( transformer.fit_transform(nhanes_df), columns=transformer.get_feature_names_out() )

    AttributeError: Transformer ordinalencoder (type OrdinalEncoder) does not provide get_feature_names_out.

      Jeinfferson Bernal G

      Jeinfferson Bernal G

      student•
      hace 3 años

      Revisa la funcion de transformacion 'transformer' puede que alli tengas el error

    Esteban Navarro Díaz

    Esteban Navarro Díaz

    student•
    hace 3 años

    El método get_feature_names_out() no funciona...

      Federico Mario

      Federico Mario

      student•
      hace 3 años

      El método funciona. Chequeá si lo escribiste mal en el código o por ahí te salteaste un paso antes.

      Bryan Carvajal

      Bryan Carvajal

      student•
      hace 3 años

      NO FUNCIONA… que mal, no encuentra otra forma de hacerlo

    Alberto Duque Villegas

    Alberto Duque Villegas

    student•
    hace 2 años
    skelearn.preprocessing.OneHotEncoder()

    Requiere:

    1. Crear el transformador

    2. Aplicar el transformador al conjunto de datos (recrear el conjunto de datos)

    Las ventajas:

    1. Se puede obtener un array con las categorías que hayan sido codificadas.

    2. Es posible recuperar un array con las inversas de las transformaciones realizadas.

      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      gracias again!

    Jeinfferson Bernal G

    Jeinfferson Bernal G

    student•
    hace 3 años

    Metodo con Pandas

    # Metodo de Pandas ( nhanes_transformed_df2 # dataframe .select_columns('general_health_condition') # variable categorica .pipe(pd.get_dummies) )
    Untitled (5).png
    • El problema con el metodo Pandas
    ( nhanes_transformed_df2 # dataframe .select_columns('general_health_condition') # variable categorica .head(10) .pipe(pd.get_dummies) )
    Untitled (6).png

    Al considerar solo las primeras 10 observaciones no toma en cuenta las demas categorias, solo las que estan contenidas en las primeras 10. Por otro lado, no considera una columna para los valores faltantes. Es util para representar los datos de manera rapida pero para fines practicos donde se requiera operaciones, inversas o entrenar un modelo con unas mismas dimensiones no funciona

    Mario Alexander Vargas Celis

    Mario Alexander Vargas Celis

    student•
    hace un año

    El tratamiento de variables categóricas mediante **One-Hot Encoding** es una técnica común en el preprocesamiento de datos. Convierte las variables categóricas en varias columnas binarias, donde cada columna representa una categoría única, asignando un valor de 1 cuando la categoría está presente y 0 cuando no lo está. Este método evita el problema de orden implícito que puede ocurrir al usar codificación ordinal en variables categóricas sin una jerarquía natural.

    ### Proceso de One-Hot Encoding

    1. **Selecciona las variables categóricas** que deseas codificar.

    2. **Aplica One-Hot Encoding** para convertirlas en columnas binarias.

    3. **Asegúrate de que el resto de las columnas no categóricas** (si existen) pasen sin modificaciones o se procesen adecuadamente.

    ### Ejemplo en Python usando pandas y sklearn

    #### Paso 1: Importar bibliotecas

    import pandas as pd from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder

    #### Paso 2: Crear un conjunto de datos de ejemplo

    \# Crear un DataFrame con una variable categórica data = {   'gender': \['Male', 'Female', 'Female', 'Male'],   'age': \[23, 45, 31, 22],   'income': \[50000, 60000, 65000, 45000] } df = pd.DataFrame(data)

    #### Paso 3: Aplicar One-Hot Encoding a la variable categórica

    \# Definir la transformación con OneHotEncoder categorical\_transformer = ColumnTransformer(   transformers=\[   ('cat', OneHotEncoder(), \['gender']) # Aplicar One-Hot Encoding a la columna 'gender'   ],   remainder='passthrough' # El resto de las columnas permanecen sin cambios ) \# Transformar el DataFrame transformed\_df = pd.DataFrame(categorical\_transformer.fit\_transform(df)) \# Cambiar los nombres de las columnas para que sean más comprensibles transformed\_df.columns = \['gender\_Female', 'gender\_Male', 'age', 'income'] print(transformed\_df)

    ### Salida esperada:

    | gender_Female | gender_Male | age | income |

    |:-------------:|:-----------:|:---:|:------:|

    | 0 | 1 | 23 | 50000 |

    | 1 | 0 | 45 | 60000 |

    | 1 | 0 | 31 | 65000 |

    | 0 | 1 | 22 | 45000 |

    ### Consideraciones adicionales:

    - **One-Hot Encoding** es particularmente útil cuando no existe una relación de orden entre las categorías.

    - Si tienes muchas categorías, este método puede aumentar significativamente el número de columnas, lo cual es algo a tener en cuenta al trabajar con grandes volúmenes de datos.

    Carlos Eduardo Bracho Rosales

    Carlos Eduardo Bracho Rosales

    student•
    hace 2 años

    Aqui les dejo unas clases de Platzi en donde se habla del procesamiento de variables categoricas (como el One Hot)

    • Pipeline de procesamiento de datos para variables categoricas

    • Procesamiento para variables categóricas con Python

      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      gracias.!

    Alberto Duque Villegas

    Alberto Duque Villegas

    student•
    hace 2 años
    pandas.get_dummies()

    Tiene dos limitaciones:

    1. Si se selecciona un numero determinado de columnas donde no aparezcan algunos valores, entonces la matriz o tabla ancha tampoco va a tener esos valores (utilizaría menos información de la disponible en el df original).
    2. No hay una columna que indique si hay valores faltantes en la variable, porque resultan enmascarados por los ceros de la matriz o tabla ancha.

    En conclusión: para fines prácticos de análisis de datos: por ejemplo, hacer operaciones, hacer inversas o entrenar un modelo, no es una opción para hacer la codificación (encoding) de variables categóricas.

      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      gracias..!

    Emmanuel Guerra Sánchez

    Emmanuel Guerra Sánchez

    student•
    hace un año
    • OrdinalEncoder: Posiciones de futbolistas
    • OneHotEncoder: Color de un pixel en RGB
    Rodrigo Martinez

    Rodrigo Martinez

    student•
    hace un año

    Cuando tenemos categorias ciclicas por ejemplo "wind_direction" y esta esta expresada en norte, sur, etc... no podemos hacer OrdinalEncoder ya que la categoria "norte" esta cerca de la categoria "este", pero de forma ordinal no lo esta (digamos 0, 1, 2, 3, 4, 5, 6; norte, noreste, ...) por lo que casi siempre es necesario oneHotEncoding y tambien podemos usar CuPy para el manejo de matrices de alta dimensionalidad y de muchos ceros (sparse matrix).

    Miguel Antonio Rojas Martinez

    Miguel Antonio Rojas Martinez

    student•
    hace un año

    Muy buena esta clase!!!

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads