Come posso calcolare la probabilità di previsione di una classe in Java Weka Api?


9

Sto sviluppando un modello di previsione utilizzando Java Weka api. Posso prevedere la classe per la nuova istanza utilizzando il seguente codice:

double predictClass = classifer.classifyInstance(instance)

Tuttavia, ho bisogno della probabilità della classe anziché del valore della classe. Grazie in anticipo per il tuo supporto.

Risposte:


8

Benvenuto nella community! Puoi sostituire il tuo codice con il seguente codice.

double[] prediction=classifier.distributionForInstance(instance);

    for (int k<prediction.length; k++){
    System.out.println("Probability of class "+
      trains.classAttribute().value(k)+
       " : "+Double.toString(prediction[k]));
      }

Questo ciclo stampa tutti e quattro i valori.
Spero che ti possa aiutare.


1
Grazie per la sua pronta risposta. Ma non capisco cosa restituisca esattamente classifier.distributionForInstance (istanza)
Howa Begum,

1
@HowaBegum è possibile visualizzare il valore restituito stampando il contenuto della previsione variabile. Restituirà quattro valori come classe o, probabilità di previsione, classe 1, probabilità di previsione. Spero che tu capisca
Rejaul Karim,

1
Grazie ancora per il vostro aiuto. Mi aiuta davvero molto.
Howa Begum,

1
Sono contento che abbia aiutato.
Rejaul Karim,

1

Funziona bene, grazie mille. Ci sono alcune correzioni:

    //Dont forget create new Instance for prediction.
    DenseInstance newinstance = new DenseInstance(2);
    double[] prediction=classifier.distributionForInstance(newinstance);
    //Some correction in for 
        for (int k =0; k<prediction.length; k++){
            System.out.println("Probability of class "+
                    newinstance.classAttribute().value(k)+
                    " : "+Double.toString(prediction[k]));
        }
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.