Como ajustar tipos de dados categóricos para classificação aleatória de florestas?


11

Preciso encontrar a precisão de um conjunto de dados de treinamento aplicando o Algoritmo Aleatório de Floresta. Mas meu tipo de conjunto de dados é categórico e numérico. Quando tentei ajustar esses dados, recebo um erro.

'Input contém NaN, infinito ou um valor muito grande para dtype (' float32 ')'.

Pode ser que o problema seja para tipos de dados do objeto. Como posso ajustar dados categóricos sem transformar para aplicar a RF?

Aqui está o meu código.

captura de tela

captura de tela

captura de tela


Você não precisa realizar o one_hot se estiver usando um modelo de árvore, pois ele não está medindo a distância como outro método.
junho Yang

11
@JunYang, o scikit-learn atualmente requer categorias de codificação.
Ben Reiniger

Respostas:


11

Você precisa converter os recursos categóricos em atributos numéricos. Uma abordagem comum é usar a codificação one-hot, mas essa definitivamente não é a única opção. Se você tiver uma variável com um número alto de níveis categóricos, considere combinar níveis ou usar o truque de hash. O Sklearn vem equipado com várias abordagens (consulte a seção "consulte também"): Um codificador quente e truque de hash

Se você não está comprometido com o sklearn, a implementação da floresta aleatória h2o manipula diretamente os recursos categóricos.


0

Há algum problema para obter esse tipo de erro, até onde eu sei. O primeiro é que, nos meus conjuntos de dados, existe espaço extra e por isso, mostrando erro, 'Entrada contém valor NAN; Segundo, o python não é capaz de trabalhar com nenhum tipo de valor de objeto. Precisamos converter esse valor do objeto em valor numérico. Para converter um objeto em numérico, existem dois tipos de processo de codificação: Label Encoder e One Hot Encoder. Onde o codificador de etiqueta codifica o valor do objeto entre 0 e n_classes-1 e Um codificador quente codifica o valor entre 0 e 1. No meu trabalho, antes de ajustar meus dados para qualquer tipo de método de classificação, uso o codificador de etiqueta para converter valor e antes de converter, asseguro que não existe espaço em branco no meu conjunto de dados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.