¿Cómo puedo ajustar los tipos de datos categóricos para la clasificación aleatoria de bosques?

11

Necesito encontrar la precisión de un conjunto de datos de entrenamiento mediante la aplicación de Algoritmo de bosque aleatorio. Pero mi tipo de conjunto de datos es categórico y numérico. Cuando intenté ajustar esos datos, recibí un error.

'La entrada contiene NaN, infinito o un valor demasiado grande para dtype (' float32 ')'.

Puede ser que el problema sea para los tipos de datos de objetos. ¿Cómo puedo ajustar datos categóricos sin transformar para aplicar RF?

Aquí está mi código.

captura de pantalla

captura de pantalla

captura de pantalla

IS2057
fuente
No necesita realizar one_hot si está utilizando un modelo de árbol, porque no mide la distancia como otro método.
Jun Yang
1
@JunYang, scikit-learn actualmente requiere codificación de categorías.
Ben Reiniger

Respuestas:

11

Necesita convertir las características categóricas en atributos numéricos. Un enfoque común es utilizar la codificación de un solo uso, pero definitivamente esa no es la única opción. Si tiene una variable con un alto número de niveles categóricos, debería considerar combinar niveles o usar el truco de hash. Sklearn viene equipado con varios enfoques (consulte la sección "ver también"): un codificador en caliente y un truco de hash

Si no está comprometido con sklearn, la implementación de bosque aleatorio h2o maneja características categóricas directamente.

David Marx
fuente
0

Hay algún problema para obtener este tipo de error hasta donde yo sé. El primero es que, en mis conjuntos de datos, existe un espacio adicional por el cual, al mostrar el error, 'Entrada contiene valor NAN; En segundo lugar, python no puede trabajar con ningún tipo de valor de objeto. Necesitamos convertir este valor de objeto en valor numérico. Para convertir objetos en numéricos, existen dos tipos de procesos de codificación: codificador de etiquetas y un codificador activo. Donde el codificador de etiquetas codifica el valor del objeto entre 0 a n_classes-1 y Un codificador de codificación en caliente entre 0 y 1. En mi trabajo, antes de ajustar mis datos para cualquier tipo de método de clasificación, uso el codificador de etiquetas para convertir el valor y antes de convertir me aseguro de que No existe espacio en blanco en mi conjunto de datos.

IS2057
fuente