You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by to...@apache.org on 2012/10/30 18:41:32 UTC

svn commit: r1403798 - /lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java

Author: tommaso
Date: Tue Oct 30 17:41:32 2012
New Revision: 1403798

URL: http://svn.apache.org/viewvc?rev=1403798&view=rev
Log:
[LUCENE-4345] - adding kNN score as count / k for the most frequent class in results

Modified:
    lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java

Modified: lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java?rev=1403798&r1=1403797&r2=1403798&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java (original)
+++ lucene/dev/trunk/lucene/classification/src/java/org/apache/lucene/classification/KNearestNeighborClassifier.java Tue Oct 30 17:41:32 2012
@@ -32,6 +32,7 @@ import java.util.Map;
 /**
  * A k-Nearest Neighbor classifier (see <code>http://en.wikipedia.org/wiki/K-nearest_neighbors</code>) based
  * on {@link MoreLikeThis}
+ *
  * @lucene.experimental
  */
 public class KNearestNeighborClassifier implements Classifier {
@@ -44,6 +45,7 @@ public class KNearestNeighborClassifier 
 
   /**
    * Create a {@link Classifier} using kNN algorithm
+   *
    * @param k the number of neighbors to analyze as an <code>int</code>
    */
   public KNearestNeighborClassifier(int k) {
@@ -62,8 +64,7 @@ public class KNearestNeighborClassifier 
       Integer count = classCounts.get(cl);
       if (count != null) {
         classCounts.put(cl, count + 1);
-      }
-      else {
+      } else {
         classCounts.put(cl, 1);
       }
     }
@@ -76,7 +77,7 @@ public class KNearestNeighborClassifier 
         assignedClass = cl;
       }
     }
-    double score = 1; // TODO : derive score from query
+    double score = classCounts.get(assignedClass) / k;
     return new ClassificationResult(assignedClass, score);
   }