Wie berechne ich die Vorhersagewahrscheinlichkeit einer Klasse in Java Weka Api?

9

Ich entwickle ein Vorhersagemodell mit Java Weka API. Ich kann die Klasse für die neue Instanz mit dem folgenden Code vorhersagen:

double predictClass = classifer.classifyInstance(instance)

Ich benötige jedoch eine Klassenwahrscheinlichkeit anstelle eines Klassenwerts. Danke im Voraus für deine Unterstützung.

Howa Begum
quelle

Antworten:

8

Willkommen in der Community! Sie können Ihren Code durch den folgenden Code ersetzen.

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]));
      }

Diese Schleife druckt alle vier Werte.
Hoffe es wird dir helfen.

Rejaul Karim
quelle
1
Danke für die schnelle Antwort. Aber ich verstehe nicht, welche classifier.distributionForInstance (Instanz) genau
zurückgibt
1
@HowaBegum Sie können den Rückgabewert sehen, indem Sie den Inhalt der Variablenvorhersage drucken. Es werden vier Werte zurückgegeben, z. B. Klasse o, Vorhersagewahrscheinlichkeit, Klasse 1, Vorhersagewahrscheinlichkeit.
Ich
1
Danke nochmal für deine Hilfe. Es hilft mir wirklich sehr.
Howa Begum
1
Ich bin froh, dass es geholfen hat.
Rejaul Karim
1

Es funktioniert gut, vielen Dank. Es gibt einige Korrekturen:

    //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]));
        }
Alex Titov
quelle