Codificador One-Hot
Cuando se trata de valores nominales, su manejo es un poco más complejo.
Para datos ordinales, como valoraciones de usuarios que van de 'Terrible' a 'Great', codificarlos como números del 0 al 4 es adecuado porque el modelo puede captar el orden inherente.
En cambio, para una característica como 'city' con cinco categorías distintas, codificarlas como números del 0 al 4 sugeriría incorrectamente un orden. En este caso, la codificación one-hot es una mejor opción, ya que representa las categorías sin implicar una jerarquía.
Para codificar datos nominales, se utiliza el transformador OneHotEncoder. Este crea una columna para cada valor único. Luego, para cada fila, asigna 1 a la columna correspondiente al valor de esa fila y 0 a las demás columnas.
Lo que originalmente era 'NewYork' ahora tiene 1 en la columna 'City_NewYork' y 0 en las demás columnas City_.
Aplicar OneHotEncoder al conjunto de datos penguins. Las características nominales son 'island' y 'sex'. La columna 'species' es el objetivo y se tratará por separado al abordar la codificación del objetivo en el siguiente capítulo.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
Para aplicar OneHotEncoder, inicializar el objeto del codificador y pasar las columnas seleccionadas a .fit_transform(), de la misma manera que con otros transformadores.
1234567891011import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
El método .toarray() convierte la matriz dispersa generada por OneHotEncoder en un array denso de NumPy. Los arrays densos muestran todos los valores explícitamente, facilitando la visualización y manipulación de los datos codificados dentro de un DataFrame. Las matrices dispersas almacenan solo los elementos distintos de cero, optimizando el uso de memoria. Puede omitir este método para observar la diferencia en la salida.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain what the output of the OneHotEncoder means?
How do I interpret the transformed data for the 'sex' and 'island' columns?
What should I do next after applying OneHotEncoder to these features?
Awesome!
Completion rate improved to 3.13
Codificador One-Hot
Desliza para mostrar el menú
Cuando se trata de valores nominales, su manejo es un poco más complejo.
Para datos ordinales, como valoraciones de usuarios que van de 'Terrible' a 'Great', codificarlos como números del 0 al 4 es adecuado porque el modelo puede captar el orden inherente.
En cambio, para una característica como 'city' con cinco categorías distintas, codificarlas como números del 0 al 4 sugeriría incorrectamente un orden. En este caso, la codificación one-hot es una mejor opción, ya que representa las categorías sin implicar una jerarquía.
Para codificar datos nominales, se utiliza el transformador OneHotEncoder. Este crea una columna para cada valor único. Luego, para cada fila, asigna 1 a la columna correspondiente al valor de esa fila y 0 a las demás columnas.
Lo que originalmente era 'NewYork' ahora tiene 1 en la columna 'City_NewYork' y 0 en las demás columnas City_.
Aplicar OneHotEncoder al conjunto de datos penguins. Las características nominales son 'island' y 'sex'. La columna 'species' es el objetivo y se tratará por separado al abordar la codificación del objetivo en el siguiente capítulo.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') print('island: ', df['island'].unique()) print('sex: ', df['sex'].unique())
Para aplicar OneHotEncoder, inicializar el objeto del codificador y pasar las columnas seleccionadas a .fit_transform(), de la misma manera que con otros transformadores.
1234567891011import pandas as pd from sklearn.preprocessing import OneHotEncoder df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_imputed.csv') # Assign X, y variables y = df['species'] X = df.drop('species', axis=1) # Initialize an OneHotEncoder object one_hot = OneHotEncoder() # Print transformed 'sex', 'island' columns print(one_hot.fit_transform(X[['sex', 'island']]).toarray())
El método .toarray() convierte la matriz dispersa generada por OneHotEncoder en un array denso de NumPy. Los arrays densos muestran todos los valores explícitamente, facilitando la visualización y manipulación de los datos codificados dentro de un DataFrame. Las matrices dispersas almacenan solo los elementos distintos de cero, optimizando el uso de memoria. Puede omitir este método para observar la diferencia en la salida.
¡Gracias por tus comentarios!