Comment calculer la probabilité de prédiction d'une classe dans Java Weka Api?

9

Je développe un modèle de prédiction en utilisant l'API Java Weka. Je peux prédire la classe de la nouvelle instance en utilisant le code suivant:

double predictClass = classifer.classifyInstance(instance)

Cependant, j'ai besoin d'une probabilité de classe au lieu d'une valeur de classe. Merci d'avance pour ton soutien.

Howa Begum
la source

Réponses:

8

Bienvenue dans la communauté! Vous pouvez remplacer votre code par le code suivant.

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

Cette boucle imprime les quatre valeurs.
J'espère que cela vous aidera.

Rejaul Karim
la source
1
Merci pour votre réponse rapide. Mais, je ne comprends pas ce que classifier.distributionForInstance (instance) renvoie exactement
Howa Begum
1
@HowaBegum vous pouvez voir la valeur de retour en imprimant le contenu de la prédiction variable. Il renverra quatre valeurs telles que la classe o, la probabilité de prédiction, la classe 1, la probabilité de prédiction. J'espère que vous comprenez
Rejaul Karim
1
Merci encore pour votre aide. Ça m'aide beaucoup.
Howa Begum
1
Je suis content que cela ait aidé.
Rejaul Karim
1

C'est un bon travail, merci beaucoup. Il y a quelques corrections:

    //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
la source