Disons que j'ai une caractéristique catégorielle, la couleur, qui prend les valeurs
["rouge", "bleu", "vert", "orange"],
et je veux l'utiliser pour prédire quelque chose dans une forêt aléatoire. Si je l'encode à chaud (c'est-à-dire que je le change en quatre variables fictives), comment puis-je dire à sklearn que les quatre variables fictives sont vraiment une variable? Plus précisément, lorsque sklearn sélectionne de manière aléatoire des entités à utiliser sur différents nœuds, il doit inclure les mannequins rouge, bleu, vert et orange ensemble, ou il ne doit en inclure aucune.
J'ai entendu dire qu'il n'y avait aucun moyen de le faire, mais j'imagine qu'il doit y avoir un moyen de traiter les variables catégorielles sans les coder arbitrairement comme des nombres ou quelque chose comme ça.
Non, il n'y en a pas. Quelqu'un travaille là-dessus et le correctif pourrait être fusionné dans la ligne principale un jour, mais pour l'instant il n'y a pas de support pour les variables catégorielles dans scikit-learn sauf l'encodage factice (one-hot).
La plupart des implémentations de forêt aléatoire (et de nombreux autres algorithmes d'apprentissage automatique) qui acceptent les entrées catégorielles automatisent simplement le codage des fonctionnalités catégorielles pour vous ou utilisent une méthode qui devient calculable pour un grand nombre de catégories .
ne exception notable est H2O . H2O a une très méthode efficace pour gérer directement les données catégorielles, ce qui lui donne souvent un avantage sur les méthodes d'arborescence qui nécessitent un codage à chaud.
Cet article de Will McGinnis a une très bonne discussion sur l'encodage à chaud et les alternatives .
Vous devez transformer la variable catégorielle en une série de variables fictives. Oui, je sais que c'est ennuyeux et semble inutile, mais c'est ainsi que Sklearn fonctionne. si vous utilisez des pandas. utilisez pd.get_dummies, cela fonctionne très bien.