2013-07-11 4 views
0

Je travaille sur un Web Service écrit en Java pour utiliser l'algorithme We48 de Weka pour classer certains attributs. D'abord, il construit le classificateur, puis il classe une instance en utilisant l'arbre de classification.Weka - Obtenir "Précision%"?

Cela fait partie du code i ai pour le procédé de classifydata

fc.buildClassifier(train); 
for (int i = 0; i < test.numInstances(); i++) 
{ 
double pred = fc.classifyInstance(test.instance(i)); 
predicated = (test.classAttribute().value((int) pred)); 
} 

étant fc la FilteredClassifier qui a été précédemment définie, étant former les données utilisées pour construire le classificateur et de tester l'instance de classer I » Je ne sais pas non plus si avec ce code je fais une bonne classification, si vous pouviez confirmer que ce serait bien.

Ce que je veux vraiment, c'est obtenir le "pourcentage de précision". Je ne sais pas vraiment si ça s'appelle comme ça mais je ne sais pas comment le dire autrement. Fondamentalement, je veux quelque chose qui va retourner le pourcentage de précision du résultat de la classification. Imaginez que j'ai simple un arbre qui a seulement 2 classifications, "1" ou "2". Imaginez que je classe une instance et que le résultat soit "2". Maintenant je veux quelque chose qui retournera à quel point il est précis que l'instance soit un "2", et qui dit que la précision dit la probabilité d'être vraiment un "2"

J'espère que je me suis fait comprendre parce que c'est un peu nouveau pour moi aswell

Répondre

1

pour cela, vous devez utiliser le distributionForInstance() méthode:

double[] probabilityDistribution = fc.distributionForInstance(test.instance[i]) 

Ensuite, si vous avez les deux valeurs de la classe « 1 » et « 2 » (et vous avez ajouté les valeurs d'attribut/classe dans cet ordre à votre attribut de classe), vous pouvez obtenir les probabilités avec lesquelles l'instance de test donnée est de l'une des deux valeurs de classe par:

// Probability of the test instance beeing a "1" 
double classAtt1Prob = probabilityDistribution[0]; 
// Probability of the test instance beeing a "2" 
double classAtt2Prob = probabilityDistribution[1];