Come posso adattare i tipi di dati categorici per la classificazione casuale delle foreste?


11

Devo trovare l'accuratezza di un set di dati di allenamento applicando l'algoritmo casuale della foresta. Ma i miei tipi di set di dati sono sia categorici che numerici. Quando ho provato ad adattare quei dati, ho ricevuto un errore.

'Input contiene NaN, infinito o un valore troppo grande per dtype (' float32 ')'.

Potrebbe essere il problema per i tipi di dati oggetto. Come posso adattare i dati categorici senza trasformarli per l'applicazione della RF?

Ecco il mio codice

immagine dello schermo

immagine dello schermo

immagine dello schermo


Non è necessario eseguire one_hot se si utilizza un modello ad albero, poiché non misura la distanza come un altro metodo.
Jun Yang,

1
@JunYang, scikit-learn attualmente non richiede codifica di categorie.
Ben Reiniger,

Risposte:


11

È necessario convertire le caratteristiche categoriche in attributi numerici. Un approccio comune è utilizzare la codifica one-hot, ma questa non è sicuramente l'unica opzione. Se hai una variabile con un numero elevato di livelli categorici, dovresti considerare la combinazione di livelli o l'utilizzo del trucco di hashing. Sklearn è dotato di diversi approcci (controlla la sezione "vedi anche"): un codificatore a caldo e un trucco hash

Se non ti impegni a sklearn, l' implementazione della foresta casuale h2o gestisce direttamente le caratteristiche categoriche.


0

Ci sono alcuni problemi per ottenere questo tipo di errore, per quanto ne so. Il primo è che nei miei set di dati esiste uno spazio aggiuntivo che spiega perché mostrare l'errore "Input contiene il valore NAN; In secondo luogo, python non è in grado di funzionare con nessun tipo di valore oggetto. Dobbiamo convertire questo valore di oggetto in valore numerico. Per convertire l'oggetto in numerico esiste un processo di codifica di due tipi: codificatore di etichette e un codificatore a caldo. Laddove il codificatore di etichetta codifica un valore oggetto compreso tra 0 e n_classes-1 e Un codificatore a caldo codifica un valore compreso tra 0 e 1. Nel mio lavoro, prima di adattare i miei dati per qualsiasi tipo di metodo di classificazione, utilizzo il codificatore di etichetta per convertire il valore e prima di convertirlo, mi assicuro che nessuno spazio vuoto esiste nel mio set di dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.