Categoría procesamiento de datos: habilidades y métodos que debes conocer

¿Qué son los datos categóricos?

Los datos categóricos son un tipo de datos común en el que los valores representan varias categorías o agrupaciones diferentes. Las categorías pueden estar ordenadas (p. ej., "bajo", "medio", "alto") o desordenadas (p. ej., "rojo", "azul", "verde").

El objetivo de procesar datos categóricos es transformarlos en una forma que un modelo de aprendizaje automático pueda entender. A continuación, presentaremos varios métodos comunes para procesar datos de categorías.

1. Codificación de etiquetas

La codificación de etiquetas es un método simple que asigna cada categoría a un número entero. Este método es adecuado para tratar con datos de categoría ordenados, porque los datos codificados conservan la relación de orden entre categorías.

En Python, podemos usar LabelEncoder de sklearn para la codificación de etiquetas.

from sklearn.preprocessing import LabelEncoder

# 假设我们有一个有序类别列A
df = pd.DataFrame({'A': ['low', 'medium', 'high', 'medium', 'low', 'high']})

# 创建LabelEncoder对象
le = LabelEncoder()

# 对列A进行标签编码
df['A'] = le.fit_transform(df['A'])

# 输出结果
print(df)

2. Codificación One-Hot

La codificación one-hot es otro método comúnmente utilizado, que asigna cada categoría a un vector binario. Este método es adecuado para tratar con datos de categorías desordenadas, porque los datos codificados no introducen ninguna relación de orden innecesaria.

En Python, podemos usar la función get_dummies de pandas o OneHotEncoder de sklearn para la codificación one-hot.

from sklearn.preprocessing import OneHotEncoder

# 假设我们有一个无序类别列B
df = pd.DataFrame({'B': ['red', 'blue', 'green', 'blue', 'red']})

# 创建OneHotEncoder对象
one_hot = OneHotEncoder()

# 对列B进行独热编码
df_encoded = one_hot.fit_transform(df['B'].values.reshape(-1, 1)).toarray()

# 将numpy数组转化为数据框,列名为类别名
df_encoded = pd.DataFrame(df_encoded, columns=one_hot.categories_[0])

# 输出结果
print(df_encoded)

3. Codificación binaria

La codificación binaria es un método entre la codificación de etiquetas y la codificación one-hot. Primero convierte la codificación entera de la categoría a binaria y luego trata cada bit como una característica separada. Este enfoque es útil cuando se trata de datos con una gran cantidad de categorías, ya que puede reducir significativamente la cantidad de características codificadas.

En Python, podemos usar BinaryEncoder de la biblioteca category_encoders para la codificación binaria.

from category_encoders import BinaryEncoder

# 假设我们有一个有大量类别的列C
df = pd.DataFrame({'C': list(range(1000))})

# 创建BinaryEncoder对象
be = BinaryEncoder()

# 对列C进行二进制编码
df_encoded = be.fit_transform(df['C'])

# 输出结果
print(df_encoded)

4. Codificación basada en estadísticas

Además de los métodos de codificación basados ​​en categorías anteriores, también existen algunos métodos de codificación basados ​​en estadísticas, como la codificación de frecuencia, la codificación de objetos, la codificación WOE, etc. Estos métodos generalmente son adecuados para situaciones con una gran cantidad de categorías, y algunos métodos (como la codificación de destino, la codificación WOE) pueden introducir la relación entre las categorías y las variables de destino, pero también pueden causar problemas como el sobreajuste.

En Python, podemos usar la biblioteca category_encoders para estas codificaciones.

from category_encoders import TargetEncoder

# 假设我们有一个类别列D和一个目标变量target
df = pd.DataFrame({'D': ['a', 'b', 'c', 'a', 'b', 'c'],
                   'target': [1, 0, 1, 1, 0, 1]})

# 创建TargetEncoder对象
te = TargetEncoder()

# 对列D进行目标编码
df['D'] = te.fit_transform(df['D'], df['target'])

# 输出结果
print(df)

en conclusión

El manejo de datos categóricos es uno de los pasos clave en el preprocesamiento de datos. Diferentes métodos de procesamiento son adecuados para diferentes situaciones El método a elegir debe tener en cuenta las características de los datos (como si las categorías están ordenadas, el número de categorías, etc.) y nuestros modelos (como algunos modelos pueden datos de categoría de proceso, algunos modelos sensibles al tamaño de los datos, etc.).

Supongo que te gusta

Origin blog.csdn.net/a871923942/article/details/131418260
Recomendado
Clasificación