Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Codificador One-Hot | Preprocesamiento de Datos con Scikit-learn
Introducción al ML con Scikit-learn

bookCodificador One-Hot

Cuando se trata de valores nominales, su manejo es un poco más complejo.

Para datos ordinales, como las 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 discutir la codificación del objetivo en el próximo capítulo.

123456
import 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())
copy

Para aplicar OneHotEncoder, inicializa el objeto del codificador y pasa las columnas seleccionadas a .fit_transform(), de la misma manera que con otros transformadores.

1234567891011
import 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())
copy
Note
Nota

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. Puedes omitir este método para ver la diferencia en la salida.

question mark

OneHotEncoder crea nuevas columnas. ¿Es correcto?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 6

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain how OneHotEncoder works in more detail?

What are the unique values in the 'island' and 'sex' columns?

How do I interpret the output of the OneHotEncoder?

Awesome!

Completion rate improved to 3.13

bookCodificador 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 las 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 discutir la codificación del objetivo en el próximo capítulo.

123456
import 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())
copy

Para aplicar OneHotEncoder, inicializa el objeto del codificador y pasa las columnas seleccionadas a .fit_transform(), de la misma manera que con otros transformadores.

1234567891011
import 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())
copy
Note
Nota

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. Puedes omitir este método para ver la diferencia en la salida.

question mark

OneHotEncoder crea nuevas columnas. ¿Es correcto?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 6
some-alt