2013-08-15 27 views
8

Sto usando la distribuzione multinomiale dal pacchetto gbm in R. Quando uso la funzione predict, ottengo una serie di valori:Distribuzione multinomiale GBM, come usare predict() per ottenere la classe prevista?

5.086328 -4.738346 -8.492738 -5.980720 -4.351102 -4.738044 -3.220387 -4.732654 

ma voglio ottenere la probabilità di ogni classe che si verificano. Come posso recuperare le probabilità? Grazie.

+3

(Non esiste un pacchetto "GBM." Il caso delle lettere è importante in R.) Se non si desidera produrre dati, perché non produrre codice che utilizza dati di esempio dalle pagine di aiuto? –

+0

Hai accettato una risposta che era effettivamente errata negli ultimi 3,5 anni. Ti ho dato una risposta che funziona davvero. – smci

risposta

1

Dai uno sguardo allo ?predict.gbm, vedrai che c'è un parametro di "tipo" per la funzione. Prova predict(<gbm object>, <new data>, type="response").

+1

No, predicict.gbm (..., type = "response") non è implementato per multinomiale, o in effetti qualsiasi distribuzione diversa da bernoulli o poisson. – smci

+1

Per @smci, attualmente l'ultima versione di GBM è 2.1.1 rilasciata a maggio 2015, e 'type =" response "' non è ancora implementata. Tuttavia, l'uso suggerito da @ smci di 'apply' qui sotto funziona. – morten

9

predict.gbm(..., type='response') non è implementato per multinomiale, o in effetti qualsiasi distribuzione diversa da bernoulli o poisson.

Quindi devi trovare la classe più probabile (apply(.., 1, which.max) sull'uscita vettore da previsione), come desertnaut wrote:

preds = predict(your_model, n.trees, newdata=...,type='response') 

pred_class <- apply(preds, 1, which.max) 

Basta scrivere un wrapper che accetta digitare = 'risposta' e restituisce questo, quando si tratta di un modello multinomiale.