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.

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


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]));
        }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.