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.
python
data-mining
random-forest
IS2057
fuente
fuente
Respuestas:
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.
fuente
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.
fuente