Codificador Ordinal
El siguiente problema que resolveremos es el de los datos categóricos. Recuerde que existen dos tipos de datos categóricos.
Los datos ordinales siguen un orden natural, mientras que los nominales no. Dado que existe un orden natural, podemos codificar las categorías con números en ese orden.
Por ejemplo, codificaríamos la columna 'rate'
que contiene los valores 'Terrible', 'Bad', 'OK', 'Good' y 'Great' de la siguiente manera:
- 'Terrible' – 0;
- 'Bad' – 1;
- 'OK' – 2;
- 'Good' – 3;
- 'Great' – 4.
Para codificar datos ordinales, se utiliza OrdinalEncoder
. Simplemente codifica las categorías como 0, 1, 2, ... .
OrdinalEncoder
es fácil de usar como cualquier otro transformador. La única dificultad es especificar correctamente el argumento categories
.
Veamos un ejemplo de uso. Tenemos un conjunto de datos (no el conjunto de datos de penguins) con una columna 'education'
. Ahora, examinemos sus valores únicos.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Es necesario crear una lista de valores categóricos ordenados, en este caso, desde 'HS-grad' hasta 'Doctorate'.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Si necesitas transformar múltiples características usando el OrdinalEncoder
, es importante especificar las categorías para cada columna. Puedes hacerlo utilizando el argumento categories
como se muestra a continuación:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. ¿Cuál afirmación describe mejor el uso de OrdinalEncoder
para manejar datos categóricos en un conjunto de datos?
2. Supón que tienes una columna categórica llamada 'Color'
. ¿Sería apropiado utilizar el OrdinalEncoder
para codificar sus valores?
¡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
Awesome!
Completion rate improved to 3.13
Codificador Ordinal
Desliza para mostrar el menú
El siguiente problema que resolveremos es el de los datos categóricos. Recuerde que existen dos tipos de datos categóricos.
Los datos ordinales siguen un orden natural, mientras que los nominales no. Dado que existe un orden natural, podemos codificar las categorías con números en ese orden.
Por ejemplo, codificaríamos la columna 'rate'
que contiene los valores 'Terrible', 'Bad', 'OK', 'Good' y 'Great' de la siguiente manera:
- 'Terrible' – 0;
- 'Bad' – 1;
- 'OK' – 2;
- 'Good' – 3;
- 'Great' – 4.
Para codificar datos ordinales, se utiliza OrdinalEncoder
. Simplemente codifica las categorías como 0, 1, 2, ... .
OrdinalEncoder
es fácil de usar como cualquier otro transformador. La única dificultad es especificar correctamente el argumento categories
.
Veamos un ejemplo de uso. Tenemos un conjunto de datos (no el conjunto de datos de penguins) con una columna 'education'
. Ahora, examinemos sus valores únicos.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') print(df['education'].unique())
Es necesario crear una lista de valores categóricos ordenados, en este caso, desde 'HS-grad' hasta 'Doctorate'.
1234567891011121314import pandas as pd from sklearn.preprocessing import OrdinalEncoder # Load the data and assign X, y variables df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/adult_edu.csv') y = df['income'] # 'income' is a target in this dataset X = df.drop('income', axis=1) # Create a list of categories so HS-grad is encoded as 0 and Doctorate as 6 edu_categories = ['HS-grad', 'Some-college', 'Assoc', 'Bachelors', 'Masters', 'Prof-school', 'Doctorate'] # Initialize an OrdinalEncoder instance with the correct categories ord_enc = OrdinalEncoder(categories=[edu_categories]) # Transform the 'education' column and print it X['education'] = ord_enc.fit_transform(X[['education']]) print(X['education'])
Si necesitas transformar múltiples características usando el OrdinalEncoder
, es importante especificar las categorías para cada columna. Puedes hacerlo utilizando el argumento categories
como se muestra a continuación:
encoder = OrdinalEncoder(categories=[col1_categories, col2_categories, ...])
1. ¿Cuál afirmación describe mejor el uso de OrdinalEncoder
para manejar datos categóricos en un conjunto de datos?
2. Supón que tienes una columna categórica llamada 'Color'
. ¿Sería apropiado utilizar el OrdinalEncoder
para codificar sus valores?
¡Gracias por tus comentarios!