Domanda

Ho un insieme di dati che contiene le caratteristiche categoriche, che ha 4 etichette e 4 caratteristiche. (È una meta classificatore, quindi uscite dal classificatore di base servono come input in questo classificatore)

Label  Feat1 Feat2 Feat3 Feat4
 1      1     1      2     2
 2      3     1      2     2 
 3      4     3      3     1     
 4      4     1      2     4

sto usando scikit imparare, e sto pensando di utilizzare Naive Bayes o un Albero decisionale. Le esigenze classificatore di essere in grado di trattare con le caratteristiche mancanti, e ho letto sul scikit imparare di pagina che la decisione Albero non supporta i valori mancanti http://scikit-learn.org/stable/modules/tree.html .

Quello che sto cercando è consigli su come avvicinarsi mancante valori categoriali quando si utilizza scikit imparare. Inoltre, qualsiasi link a pubblicazioni accademiche affrontare questo sarebbe apprezzato.

È stato utile?

Soluzione

avrebbe bisogno di ulteriori informazioni sul problema previsione e le caratteristiche per essere in grado di dare qualcosa di più preciso.

In ogni caso, io sono sorpreso alcuna risposta finora incluse tutte le opzioni possibili in quanto non sono che molti:

  1. sbarazzarsi di osservazioni incomplete o caratteristiche --- ovviamente, solo fattibile se ci sono alcuni casi incompleti in quanto si perdono troppe informazioni altrimenti
  2. sostituire AN con un certo valore come -1 --- questo dipende il classificatore si usa; se il classificatore supporta variabili categoriali, è possibile creare una nuova categoria per i NAS per esempio. In alcune variabili continue, a volte ci sono alcuni valori che hanno senso (per esempio, nella classificazione text mining, se si dispone di una funzione di title-length ma non hai titolo, potrebbe avere senso sostituire con title-length=0)
  3. riempire i dati mancanti

Questo ultimo punto racchiude troppe cose:

  1. sostituire AN con la mediana (questo è il solito metodo artificiale; sklearn ha un classe per questo)
  2. se le serie storiche, sostituire con una media dei valori precedenti e seguenti - in panda, questo può essere fatto utilizzando DataFrame.resample () .
  3. utilizzare i $ k $ vicini più prossimi. costruire un modello KNN utilizzando le altre variabili e poi fare la media di quei vicini (se si utilizza la distanza euclidea, probabilmente dovrebbe normalizzarsi prima). Non ho mai visto questo fatto, ma probabilmente potrebbe provare a predire le AN mancanti usando un altro modello pure.

Ma tutto questo dipende molto da quello che stai facendo. Per esempio, se si è eseguito l'analisi di clustering e si sa i vostri dati è costituito da cluster, è possibile utilizzare la mediana all'interno di ogni cluster.

Forse altre soluzioni potrebbero includere le cose come modelli multimodali o multivisione. Queste sono tecniche recenti che possono far fronte con modalità mancanti, e si può vedere una caratteristica, o un sottoinsieme di caratteristiche, come una modalità. Per esempio, si potrebbe costruire un classificatore diverso per i vari sottogruppi di vostre caratteristiche (utilizzando i casi completi in ciascuno di questi sottoinsiemi) e poi costruire un altro classificatore in cima a quello di unire queste probabilità. Vorrei provare solo queste tecniche se più dei dati è mancante. Ci sono versioni più avanzate di apprendimento profonde di questo utilizzando autoencoders.

Altri suggerimenti

A mio parere è sempre meglio trattare te stesso con dati mancanti invece su affidamento su classificatore.

Ci sono molti modi per affrontare con esso:

  • osservazioni mancanti goccia
  • righe goccia dove tutte le celle in quella riga è NA
  • Inserisci dati mancanti con una delle etichette casuale
  • etichetta riempimento con frequenza massima di attributo mancante

PS: Io suggerisco di usare biblioteca panda python a scopo di pulizia dei dati.

E 'sempre una buona pratica per eseguire i dati di pulizia prima di poter realmente costruire un modello e l'applicazione qualche algoritmo su di esso. Al fine di pulizia dei dati, come la gestione dei valori mancanti, "panda" biblioteca è altamente preferito. Ecco il link alla "panda" ultima versione: http://pandas.pydata.org/ . Ed ecco il link per "lavorare con valori mancanti" di riferimento in panda: http: / /pandas.pydata.org/pandas-docs/stable/missing_data.html

Invece di riempire valore mancante categorica con mediana, vorrei utilizzare la modalità. In questo modo, si è sicuri di riempire con modalità esistente, anche se si modalità sono stringhe. A seconda del processo dietro il valore mancante, come ha detto Ricardo Cruz, si potrebbe anche aggiungere una nuova modalità per il mancante

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top