Un artículo para comprender la codificación one-hot en Pandas

¿Qué es la codificación one-hot?

La codificación one-hot es un paso de preprocesamiento de datos que se utiliza para convertir valores categóricos en representaciones numéricas compatibles.

columna_categorica bool_col col_1 col_2 etiqueta
valor_A Verdadero 9 4 0
valor_B FALSO 7 2 0
valorado Verdadero 9 5 0
valorado FALSO 8 3 1
valorado FALSO 9 0 1
valorado FALSO 5 4 1
valor_B Verdadero 8 1 1
valorado Verdadero 6 6 1
valor_C Verdadero 0 5 0

Por ejemplo, en este conjunto de datos ficticio, la columna categórica tiene varios valores de cadena. Muchos algoritmos de aprendizaje automático requieren que los datos de entrada estén en forma numérica, por lo que se necesita alguna forma de convertir este atributo de datos en una forma compatible con dichos algoritmos. Este artículo divide una columna categórica en múltiples columnas de valores binarios. 

Codificación one-hot usando la biblioteca Pandas

Primero, lea .csvel archivo o cualquier otro archivo relevante en un marco de datos de Pandas.

df = pd.read_csv("data.csv")

Para comprobar valores únicos y comprender mejor los datos, puede utilizar las siguientes funciones de Panda.

df['categorical_column'].nunique()
df['categorical_column'].unique()

Para estos datos ficticios, la función devuelve el siguiente resultado:

>>> 4
>>> array(['value_A', 'value_C', 'value_D', 'value_B'], dtype=object)

Para una columna categórica, se puede dividir en varias columnas, para lo cual este artículo utiliza pandas.get_dummies()el método. Requiere los siguientes parámetros:

parámetro
datos: similar a matriz, serie o marco de datos Objeto de marco de datos sin formato de Pandas
columnas: similar a una lista, el valor predeterminado es Ninguno Lista de columnas categóricas que se codificarán en caliente
drop_first: valor booleano, el valor predeterminado es falso Eliminar el primer nivel de etiquetas de categorías

Para comprender mejor esta función, realicemos una codificación one-hot en este conjunto de datos ficticio.

  • Codificación one-hot de columnas categóricas

Usamos get_dummiesel método y tomamos el marco de datos original como entrada de datos, en columnsel que pasamos una categorical_columnlista que contiene solo los encabezados.

df_encoded = pd.get_dummies(df, columns=['categorical_column', ])

El siguiente comando elimina categorical_columny crea una nueva columna para cada valor único. Entonces, una sola columna categórica se convierte en 4 columnas nuevas en las que solo una columna tiene el valor 1 y otras 3 columnas tienen el valor 0, por eso se llama codificación activa.

valor_columna_categorial_A valor_columna_categorial_B valor_columna_categorica_C valor_columna_categorial_D
1 0 0 0
0 1 0 0
0 0 0 1
0 0 0 1
0 0 0 1
0 0 0 1
0 1 0 0
0 0 0 1
0 0 1 0
0 0 0 1

El problema surge cuando uno quiere codificar en caliente una columna booleana, lo que crea dos columnas nuevas.

  • Codificación one-hot de columnas binarias
df_encoded = pd.get_dummies(df, columns=[bool_col, ])
bool_col_False bool_col_True
0 1
1 0
0 1
1 0

En lugar de tener que agregar una columna, puede tener solo una columna Truecodificada como 1y Falsecodificada como 0. Para resolver este problema, drop_firstse pueden utilizar parámetros.

df_encoded = pd.get_dummies(df, columns=['bool_col'], drop_first=True)
bool_col_True
1
0
1
0

en conclusión

Se realiza una codificación one-hot en el conjunto de datos virtuales y el resultado final es el siguiente:

col_1 col_2 booleano A B C D etiqueta
9 4 1 1 0 0 0 0
7 2 0 0 1 0 0 0
9 5 1 0 0 0 1 0
8 3 0 0 0 0 1 1
9 0 0 0 0 0 1 1
5 4 0 0 0 0 1 1
8 1 1 0 1 0 0 1
6 6 1 0 0 0 1 1
0 5 1 0 0 1 0 0
1 8 1 0 0 0 1 0

Los valores categóricos y booleanos se convierten en valores numéricos que pueden usarse como entrada para algoritmos de aprendizaje automático.

Supongo que te gusta

Origin blog.csdn.net/csdn1561168266/article/details/132328362
Recomendado
Clasificación