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.

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.


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]));
        }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.