¿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.

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.


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]));
        }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.