La decodificación de variables categóricas a numéricas implica que cada elemento del nuevo vector se interpreta como una nueva variable. Por tanto, aumenta la dimensión del dataset y el tiempo de procesamiento.
¿Para qué sirve la estadística descriptiva?
Estadística descriptiva vs. inferencial
Flujo de trabajo en data science
Plan del curso
Estadística descriptiva para analítica
¿Cómo usar Deepnote?
Tipos de datos
Medidas de tendencia central
Metáfora de Bill Gates en un bar
Medidas de tendencia central en Python
Medidas de dispersión
Desviación estándar
Medidas de dispersión en Python
Exploración visual de los datos
Diagramas de dispersión en el análisis de datos
Estadística en la ingesta de datos
Pipelines de procesamiento para variables numéricas
Transformación no lineal
Procesamiento de datos numéricos en Python
Pipelines de procesamiento para variables categóricas
Procesamiento para variables categóricas con Python
Correlaciones
Matriz de covarianza
Proyecto de aplicación
Cálculo de valores propios de una matriz
PCA: análisis de componentes principales
Reducción de dimensionalidad con PCA
Despedida
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En el mundo del análisis de datos y del machine learning, es crucial poder manejar diferentes tipos de datos de manera eficiente. Una pregunta recurrente es cómo transformar variables categóricas en datos numéricos en Python, para lo cual existen distintas estrategias que pueden aplicarse dependiendo del caso específico y las herramientas utilizadas, como pandas o scikit-learn. Aquí exploramos las diferencias entre estos métodos y su implementación práctica.
Existen dos métodos principales para transformar variables categóricas en numéricas:
Dummmy encoding: Se trata de una representación compacta, donde, por ejemplo, si tenemos tres categorías (inglés, español y francés), podemos codificar esas tres categorías en un vector de dos números: Inglés (0,0), Español (0,1) y Francés (1,0). La debilidad de este método es que no puede manejar nuevas categorías o valores no esperados.
One-hot encoding: Aquí se crea un vector con tantas componentes como categorías existan. Siguiendo el ejemplo anterior, Inglés se codificaría como (1,0,0), Español como (0,1,0), y Francés como (0,0,1). Este método, aunque usa más números, permite codificar valores no identificados como (0,0,0), lo que le otorga flexibilidad al manejar nuevas categorías.
En pandas, la función get_dummies
ofrece la funcionalidad necesaria para realizar un one-hot encoding, aunque el nombre de la función pueda generar confusión. Aquí un ejemplo de aplicación:
import pandas as pd
# Supongamos que tenemos un dataframe df con una columna categórica 'engine_type'
df = pd.DataFrame({'engine_type': ['diesel', 'electric', 'gas']})
# Aplicamos get_dummies para realizar un one-hot encoding
df_encoded = pd.get_dummies(df['engine_type'])
print(df_encoded)
Esto transformará la columna engine_type
en tres columnas binarias, una por cada categoría encontrada.
Scikit-learn también ofrece soluciones robustas para el one-hot encoding mediante su clase OneHotEncoder
.
from sklearn.preprocessing import OneHotEncoder
# Inicializamos el codificador
encoder = OneHotEncoder(handle_unknown='ignore')
# Ajustamos el encoder a nuestros datos
encoder.fit(df[['engine_type']])
# Transformamos los datos
encoded_data = encoder.transform([['gas'], ['diesel'], ['unknown']]).toarray()
print(encoded_data)
Al configurarlo con handle_unknown='ignore'
, el encoder asignará un vector de ceros a cualquier categoría no conocida, multiplicando así la flexibilidad del método.
Definitivamente, y puede ser útil dependiendo del análisis a realizar. Un ejemplo es tratar los años de producción de un auto como categorías:
# Suponemos que gear_produced es una columna con años
encoder.fit(df[['gear_produced']])
# Transformamos años conocidos y desconocidos
encoded_years = encoder.transform([[2009], [2016], [1900]]).toarray()
print(encoded_years)
Al hacer esto, cada año se convierte en una categoría distinta, lo que si bien aumenta la dimensionalidad del dataset, ofrece una nueva perspectiva para su análisis.
Con estas técnicas en mano, tienes la capacidad de adaptar y manipular datos categóricos de una forma que potencie tus análisis y modelos. Sigue explorando y aplicando estas técnicas para avanzar en tu dominio del análisis de datos en Python.
Aportes 24
Preguntas 15
La decodificación de variables categóricas a numéricas implica que cada elemento del nuevo vector se interpreta como una nueva variable. Por tanto, aumenta la dimensión del dataset y el tiempo de procesamiento.
¿Podemos tratar a las variables numéricas como categóricas? Claro que sí. Todo depende del contexto y del proyecto.
En el mundo de ciencia de datos, es muy común usar el modo ‘one-hot’, puesto que ‘dummy’ ni siquiera existe en las librerías de Python.
La desventaja del one-hot es que cada elemento de los vectores que resultan es como si fueran nuevas variables. Esto aumenta demasiado
la dimensionalidad de nuestro dataset y se vea afectado en el rendimiento.
Me pregunto si se podria utlizar una codificacion tipo Word Embeddings para variables categoricas.
catergoria | Dummy | One-hot |
---|---|---|
ingles | [0,0] | [1,0,0] |
español | [0,1] | [0,1,0] |
frances | [1,0] | [0,0,1] |
Aquí pueden aprender un poquito mas de one hot
Información resumida de esta clase
#EstudiantesDePlatzi
Lo que buscamos es convertir estas variables categóricas en variables numéricas para poder trabajar nuestros modelos
También podemos tratar variables numéricas como categóricas
Con le encoding one hot la longitud del vector es igual a la cantidad de categorías que tengan mis datos, esto me ayuda para cuando tengo valores nulos
En Python hago esto con la función get_dummies de la librería panda
Puedo realizar la misma operación usando la librería sklearn.preprocessing
Cuando hago este mismo ejercicio ahora con variables numéricas se incrementan bastante los datos y se debe hacer una reducción de los mismos
Si uno cuenta con una variable categórica con muchos datos distintos (por ejemplo países del mundo) una alternativa en vez de convertirlas a one-hot es asignarles un valor descriptivo del problema en el que uno esté trabajando, como por ejemplo el PIB de esos países.
Esta super interesante.
Francisco felicitaciones, tiempos, conceptos, ejemplos y practica consistente.
Procesamiento para variables categóricas con Python
Codificación de números enteros
Para las variables categóricas ordinales también se puede usar la función OrdinalEncoder de sklearn, aunque la codificación one hot, la mayoría de veces, también es valida en este tipo de variables
Es interesante como se puede convertir valores categoricos a numericos con el proposito de entender la funcionalidad de estos y que no tengan algun problema al momento de trabajarlo.
En este video de DotCSV encuentro muy útil la forma gráfica de entender la usabilidad del one-hot, aplicado al NLP. Este tipo de visualizaciones cobran más sentido cuando igual estás familiarizado con el álgebra lineal 🫣
Es posible ver otra forma de hacer codificación. Esta se llama Label_encoder. La documentación queda adjunta
Buena clase.
encoder.transform([[2016],[2009],[190]]).toarray()
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?