¿Cómo calculo la probabilidad de predicción de una clase en Java Weka Api?

9

Estoy desarrollando un modelo de predicción utilizando Java Weka api. Puedo predecir la clase para la nueva instancia usando el siguiente código:

double predictClass = classifer.classifyInstance(instance)

Sin embargo, necesito la probabilidad de clase en lugar del valor de la clase. Gracias de antemano por su apoyo.

Howa Begum
fuente

Respuestas:

8

¡Bienvenido a la comunidad! Puede reemplazar su código por el siguiente código.

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

Este bucle imprime los cuatro valores.
Espero que te ayude.

Rejaul Karim
fuente
1
Gracias por su rápida respuesta. Pero, no entiendo qué classifier.distributionForInstance (instancia) devuelve exactamente
Howa Begum
1
@HowaBegum puede ver el valor de retorno imprimiendo contenido de predicción variable. Devolverá cuatro valores como clase o, probabilidad de predicción, clase 1, probabilidad de predicción. Espero que entiendas
Rejaul Karim
1
De nuevo, gracias por tu ayuda. Realmente me ayudó mucho.
Howa Begum
1
Me alegra que haya ayudado.
Rejaul Karim
1

Es un buen trabajo, muchas gracias. Hay algunas correcciones:

    //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
fuente