sklearn hacer decisión decision como clasificador chaid bosques arboles arbol algoritmo aleatorios python scikit-learn random-forest one-hot

hacer - clasificador python



¿Puede aprender a bosque aleatorio manejar directamente las características categóricas? (3)

Debe convertir la variable categórica en una serie de variables ficticias. Sí, sé que es molesto y parece innecesario, pero así es como funciona Sklearn. si estás usando pandas usa pd.get_dummies, funciona muy bien.

Digamos que tengo una característica categórica, el color, que toma los valores

[''rojo'', ''azul'', ''verde'', ''naranja''],

y quiero usarlo para predecir algo en un bosque al azar. Si lo codifico en caliente (es decir, lo cambio a cuatro variables ficticias), ¿cómo le digo a sklearn que las cuatro variables ficticias son realmente una variable? Específicamente, cuando sklearn selecciona aleatoriamente características para usar en diferentes nodos, debe incluir las dummies rojas, azules, verdes y naranjas juntas, o no debe incluir ninguna de ellas.

He oído que no hay forma de hacerlo, pero me imagino que debe haber una forma de manejar las variables categóricas sin codificarlas arbitrariamente como números o algo así.


La mayoría de las implementaciones de bosque aleatorio (y muchos otros algoritmos de aprendizaje automático) que aceptan entradas categóricas son solo la automatización de la codificación de características categóricas para usted o el uso de un método que se vuelve intratable computacionalmente para un gran número de categorías .

Una excepción notable es H2O . H2O tiene un método muy eficiente para manejar datos categóricos directamente, que a menudo le da una ventaja sobre los métodos basados ​​en árbol que requieren una codificación en caliente.

Este artículo de Will McGinnis tiene una muy buena discusión sobre la codificación en caliente y las alternativas .

Este artículo de Nick Dingwall y Chris Potts tiene una muy buena discusión sobre las variables categóricas y los aprendices basados ​​en árboles .


No, no hay. Alguien está trabajando en esto y en el parche podría fusionarse en la línea principal algún día, pero en este momento no hay soporte para variables categóricas en scikit-learn, excepto la codificación ficticia (one-hot).