Iniziare a scrivere questa domanda e quindi capire la risposta. Andando a metterlo qui per i posteri, dal momento che è stato difficile trovare risposte su questo.Perché naiveBayes restituisce tutte le NA per la classificazione multiclasse in R?
Sto tentando di utilizzare il classificatore naiveBayes dal pacchetto e1071. Sembra non avere problemi a generare le previsioni per i nuovi dati, ma in realtà ho bisogno delle stime di probabilità per le classi dei nuovi dati.
Esempio:
> model <- naiveBayes(formula=as.factor(V11)~., data=table, laplace=3)
> predict(model, table[,1:10])
[1] 4 4 4 4 4 4 4 4 1 1 1 3 3 1 1
> predict(model, table[,1:10], type="raw")
1 2 3 4
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA NA NA
[14,] NA NA NA NA
[15,] NA NA NA NA
Questo mi sembra assurdo, dal momento che il fatto che il modello è in grado di previsioni di uscita significa che deve avere stime di probabilità per le classi. Cosa sta causando questo strano comportamento?
Alcune cose che ho già provato senza successo:
- tipo aggiungendo = "raw" alla chiamata del modello di costruzione.
- Usando i NaiveBayes funzionano dal pacchetto Klar invece (che non può gestire il
un esempio di alcuni dati che produce questo errore:.
table[1:5,]
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 0 0 0.000000 0.0000000 0.000000 0.0000000 0.6711444 0.7110409 0.0000000
2 0 0 0.000000 0.0000000 -1.345804 2.1978370 0.6711444 0.7110409 0.0000000
3 0 0 1.923538 -3.6718725 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
4 0 0 1.923538 -0.4079858 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
5 0 0 0.000000 0.0000000 -1.345804 0.2930449 0.6711444 0.7110409 0.0000000
V10 V11
1 0.0000000 6
2 0.0000000 3
3 -3.1316213 2
4 -0.2170431 5
5 0.0000000 4
Per renderlo più riproducibile, sarebbe bello se si potesse aggiungere alcuni dati con cui potremmo risolvere lo stesso errore. – Arun
@Arun sicuro. Ne metterò un po 'adesso. –
grazie per aver tenuto conto dei miei suggerimenti. Una cosa. Hai menzionato 'as.factor (V17)' nel tuo codice, ma ci sono 11 colonne nei dati .. Mi manca qualcosa qui o ci dovrebbero essere più colonne in 'table'? Anche 'dput (head (table))' forse meglio copiare/incollare i tuoi dati affinché altri possano riprodurli. – Arun