OneHotEncoder también realiza algo parecido a getdummies. Cuál usar y por qué?

Andrés Felipe Mesa David

Andrés Felipe Mesa David

Pregunta
studenthace 5 años

OneHotEncoder también realiza algo parecido a getdummies. Cuál usar y por qué?

2 respuestas
para escribir tu comentario
    Andrés Felipe Mesa David

    Andrés Felipe Mesa David

    studenthace 5 años

    @davinci137 Muchas gracias!! Me quedó muy claro.

    David Torres Bejarano

    David Torres Bejarano

    teacherhace 5 años

    @andresmesad Ambas son funciones destinadas a los mismo, tienes mucha razón.

    pd.get_dummies es útil para un desarrollo simple, si por ejemplo estas haciendo un análisis exploratorio ya que trasnforma el DataFrame en sí; también responde muy bien ante varaibles nulas (deja todos los valores como 0) cosa que OneHotEncoder no hace.

    import pandas as pd import numpy as np df = pd.DataFrame({'A':['a1','a2','a3',np.nan], 'B':['b1','b2','b3','b3']}) print(pd.get_dummies(df))
    A_a1A_a2A_a3B_b1B_b2B_b3
    0100100
    1010010
    2001001
    3000001

    En el caso de OneHotEncoder podrías sustituir las clases nulas pero debes tener cuidado multicolinealidad.

    from sklearn.preprocessing import OneHotEncoder ohe_class = OneHotEncoder(handle_unknown='ignore', sparse=False) ohe_class.fit(df.fillna('nan')) ohe_class.transform(df.fillna('nan')) - - - - - - - 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 - - - - - - -

    Ahora si vas a realizar un modelo te recomiendo siempre usar OneHotEncoder ya que este crea una clase que permite hacer fit nuevos datos conservando las caracterisitcas previas definidas para tu modelo, de forma que se vuelve escalable para nuevos datos en tu modelo. No es tan simple como pd.get_dummies pero funciona mejor en un pipeline de producción.

    PDTA: Recuerda siempre borrar una columna extra en tus dummies para evitar multicolinealidad pd.get_dummies(drop_first=True) o (OneHotEncoder(drop='first')). Así mismo los datos nulos es mejor deninirlos como otra categoria por el mismo problema de multicolinealidad.

Curso de Pandas con Python [Empieza Gratis]

Curso de Pandas con Python [Empieza Gratis]

Pandas es la librería de software libre para manipulación de datos con Python más usada en Data Science. Manipula grandes sets de datos numericos, tablas y series de tiempo. Trabaja con múltiples formatos de archivos de datos como csv o xls. Crea DataFrames que podrás manipular y analizar sin preocuparte por el performance de tus aplicaciones, todo esto muy fácil y rápido con Pandas.

Curso de Pandas con Python [Empieza Gratis]
Curso de Pandas con Python [Empieza Gratis]

Curso de Pandas con Python [Empieza Gratis]

Pandas es la librería de software libre para manipulación de datos con Python más usada en Data Science. Manipula grandes sets de datos numericos, tablas y series de tiempo. Trabaja con múltiples formatos de archivos de datos como csv o xls. Crea DataFrames que podrás manipular y analizar sin preocuparte por el performance de tus aplicaciones, todo esto muy fácil y rápido con Pandas.