2015-12-01 1 views
1

J'utilise OpenCV 2.4.12K-Nearest Neighbors algorithme de OpenCV

predictedValues = knn.find_nearest(samples, k, results, neighborResponses, dists); 

Cette ligne obtient essentiellement le résultat de KNN. Maintenant, mon problème est comment évaluer le résultat? Y at-il une fonction que je peux utiliser? Sinon dois-je comparer le predicted avec le results Mat?

Documentation

Merci

Ps.Thanks à guneykayim, je dois ajouter quelques bouts de code pour rendre ma question plus claire. J'ai plus de 1 vecteur

Mat predicted = new Mat(results.rows(), 1, CvType.CV_32F); 
float predictedValue; 
for (int i = 0; i < testData.rows(); i++) 
{ 
     final Mat samples = testData.row(i); 
     //predicted.<Float>at(i,0) = knn.find_nearest(samples, k); 
     predictedValue = knn.find_nearest(samples, k, results, neighborResponses, dists); //TODO: wie mat dists aufsetzen-10? 
     predicted.put(i, 1, predictedValue); 
} 

Répondre

1

La documentation, que vous partagiez, dit:

Si seulement un seul vecteur d'entrée est passé, toutes les matrices de sortie sont en option et la valeur prédite est renvoyée par la méthode.

Donc, si votre objet samples a plusieurs vecteurs, vos résultats sont retournés avec l'objet results, et vous n'avez pas besoin objet predictedValues. Cependant, si votre entrée n'est qu'un vecteur, vous n'avez pas besoin de l'objet results, vous pouvez utiliser la valeur de retour des fonctions, qui est predictedValues dans votre cas.

P.S. La fonction renvoie une seule valeurfloat, et non plusieurs valeurs.