Codificación de variables categóricas como "nombres de estado"

2020-01-13 python categorical-data one-hot-encoding label-encoding

Tengo una columna categórica con 'Nombres de estado'. No estoy seguro de qué tipo de codificación categórica tendré que realizar para convertirlos al tipo numérico.

Hay 83 nombres de estado únicos.

Label Encoder se usa para variables categóricas ordinales, pero OneHot aumentaría el número de columnas ya que hay 83 nombres de estado únicos.

¿Hay algo más que pueda probar?

Answers

Usaría OneHotEncoder de scikit ( https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html ) o Codificador de categoría con codificación establecida en 'onehot'. Encuentra automáticamente los valores únicos para cada característica y los procesa en un vector caliente. Aumenta la dimensionalidad de entrada para esa característica, pero es necesario si está haciendo algún tipo de trabajo de ciencia de datos. Si convierte la característica a un entero ordinal (es decir, solo un entero) en lugar de un vector de valores binarios, un algoritmo puede sacar conclusiones incorrectas entre dos valores categóricos (posiblemente completamente separados) que están muy juntos en el espacio categórico .

Hay otros esquemas de codificación potentes además de uno activo, que no aumentan el número de columnas. Puede probar lo siguiente (en orden creciente de complejidad):

  • codificación de conteo : codifica cada categoría por la cantidad de veces que ocurre en los datos, útil en algunos casos. Por ejemplo, si desea codificar la información de que Nueva York es una gran ciudad, el recuento de NY en los datos realmente contiene esa información, ya que esperamos que NY ocurra con frecuencia.

  • codificación de objetivo : codifique cada categoría por el valor promedio de objetivo / resultado (si el objetivo es continuo) dentro de esa categoría; o por la probabilidad de objetivo si es discreto. Un ejemplo es cuando desea codificar vecindario , que obviamente es importante para predecir el precio de la vivienda; definitivamente, puede reemplazar el nombre de cada vecindario por el precio promedio de la vivienda en ese vecindario. Esto mejora la predicción increíblemente (como se muestra en mi cuaderno Kaggle para predecir el precio de la vivienda).

Todavía hay otros esquemas de codificación útiles como Catboost, peso de la evidencia, etc. Una cosa realmente agradable es que todos estos esquemas ya están implementados en el categorical encoder biblioteca aquí .

Related