CodificadorOrdinal
El siguiente problema que resolveremos son los datos categóricos. Recordemos que hay dos tipos de datos categóricos.
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/nominal_ordinal.gif)
Los datos ordinales siguen un orden natural, mientras que los nominales no.
Puesto que existe un orden natural, podemos codificar categorías a los números en ese orden.
Por ejemplo, codificaríamos la columna "tasa" que contiene los valores "Terrible", "Malo", "OK", "Bueno" y "Genial" como:
Terrible - 0
Malo" - 1
OK" - 2
Bueno" - 3
Excelente' - 4
Para codificar datos ordinales, se utiliza OrdinalEncoder
. Sólo codifica las categorías en 0, 1, 2, ...
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/OrdinalEncoderClass.png)
Aquí tienes una imagen que muestra cómo funciona.
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/Ordinal.png)
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 Penguins) con la columna 'education'
. Veamos sus valores únicos.
Necesitamos crear una lista de valores categóricos ordenados, en este caso, desde 'HS-grad' hasta 'Doctorado'.
Nota
El
OrdinalEncoder
se utiliza principalmente para transformar las características (variableX
). Y la variableX
suele ser un DataFrame que contiene más de 1 columna.
Por eso, el argumentocategories
permite especificar la lista de categorías para cada columna, por ejemplo,categories=[col1_categories, col2_categories]
.
Y si desea transformar sólo 1 columna, debe pasar una lista que contenga otra lista, por ejemplo,categories=[col1_categories]
.
Esa es también la razón por la que el método.fit_transform()
espera el DataFrame y no funciona con Series, por lo que necesitas pasardf[['columna']]
para transformar sólo una columna.
¿Todo estuvo claro?
Contenido del Curso
ML Introduction with scikit-learn
ML Introduction with scikit-learn
1. Conceptos de Aprendizaje Automático
2. Preprocesamiento de Datos con Scikit-learn
CodificadorOrdinal
El siguiente problema que resolveremos son los datos categóricos. Recordemos que hay dos tipos de datos categóricos.
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/nominal_ordinal.gif)
Los datos ordinales siguen un orden natural, mientras que los nominales no.
Puesto que existe un orden natural, podemos codificar categorías a los números en ese orden.
Por ejemplo, codificaríamos la columna "tasa" que contiene los valores "Terrible", "Malo", "OK", "Bueno" y "Genial" como:
Terrible - 0
Malo" - 1
OK" - 2
Bueno" - 3
Excelente' - 4
Para codificar datos ordinales, se utiliza OrdinalEncoder
. Sólo codifica las categorías en 0, 1, 2, ...
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/OrdinalEncoderClass.png)
Aquí tienes una imagen que muestra cómo funciona.
![](https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/Ordinal.png)
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 Penguins) con la columna 'education'
. Veamos sus valores únicos.
Necesitamos crear una lista de valores categóricos ordenados, en este caso, desde 'HS-grad' hasta 'Doctorado'.
Nota
El
OrdinalEncoder
se utiliza principalmente para transformar las características (variableX
). Y la variableX
suele ser un DataFrame que contiene más de 1 columna.
Por eso, el argumentocategories
permite especificar la lista de categorías para cada columna, por ejemplo,categories=[col1_categories, col2_categories]
.
Y si desea transformar sólo 1 columna, debe pasar una lista que contenga otra lista, por ejemplo,categories=[col1_categories]
.
Esa es también la razón por la que el método.fit_transform()
espera el DataFrame y no funciona con Series, por lo que necesitas pasardf[['columna']]
para transformar sólo una columna.
¿Todo estuvo claro?