Como calcular a probabilidade de previsão de uma classe no Java Weka Api?

9

Estou desenvolvendo um modelo de previsão usando Java Weka api. Posso prever a classe para a nova instância usando o seguinte código:

double predictClass = classifer.classifyInstance(instance)

No entanto, preciso de probabilidade de classe em vez de valor de classe. Agradecemos antecipadamente por seu apoio.

Howa Begum
fonte

Respostas:

8

Bem-vindo à comunidade! Você pode substituir seu código pelo seguinte 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 loop imprime todos os quatro valores.
Espero que ajude você.

Rejaul Karim
fonte
1
Obrigado pela sua resposta rápida. Mas, eu não entendo o que classifier.distributionForInstance (instância) retornar exatamente
Howa Begum
1
@HowaBegum, você pode ver o valor de retorno imprimindo o conteúdo da previsão variável. Ele retornará quatro valores como classe o, probabilidade de previsão, classe 1, probabilidade de previsão. Espero que você entenda
Rejaul Karim
1
Obrigado novamente por sua ajuda. Isso realmente me ajuda muito.
faço
1
Fico feliz que tenha ajudado.
Rejaul Karim
1

É um bom trabalho, muito obrigado. Existem algumas correções:

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