Package cc.mallet.cluster.neighbor_evaluator

Source Code of cc.mallet.cluster.neighbor_evaluator.RankingNeighborEvaluator

package cc.mallet.cluster.neighbor_evaluator;


import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import cc.mallet.classify.Classifier;
import cc.mallet.types.Instance;
import cc.mallet.types.LabelVector;

/**
* Uses a {@link Classifier} that scores an array of {@link
* Neighbor}s. The Classifier expects {@link Instance}s with data
* equal to an array of {@link Neighbor}s. The labeling of each
* Instance is a set of {@link Integer}s, with labeling i
* corresponding the likelihood that {@link Neighbor} i is the "best"
* {@link Neighbor}.
*
* @author "Aron Culotta" <culotta@degas.cs.umass.edu>
* @version 1.0
* @since 1.0
* @see ClassifyingNeighborEvaluator
*/
public class RankingNeighborEvaluator extends ClassifyingNeighborEvaluator {
   
  /**
   *
   * @param classifier The Classifier used to assign a score to a {@link Neighbor}.
   * @return
   */
  public RankingNeighborEvaluator (Classifier classifier) {
    super(classifier, null);   
  }

  public double evaluate (Neighbor neighbor) {
    throw new UnsupportedOperationException("This class expects an array of Neighbors to choose from");
  }
 
  /**
   *
   * @param neighbors
   * @return An array containing a score for each of the elements of <code>neighbors</code>.
   */
  public double[] evaluate (Neighbor[] neighbors) {
    double[] scores = new double[neighbors.length];
    LabelVector ranks = classifier.classify(neighbors).getLabelVector();
    for (int i = 0; i < ranks.numLocations(); i++) {
      int idx = ((Integer)ranks.getLabelAtRank(i).getEntry()).intValue();
      scores[idx] = ranks.getValueAtRank(i);
    }
    return scores;
  }
 
  public void reset () { }
 
  public String toString () {
    return "class=" + this.getClass().getName() +
      " classifier=" + classifier.getClass().getName();
  }

  // SERIALIZATION

  private static final long serialVersionUID = 1;
  private static final int CURRENT_SERIAL_VERSION = 1;

  private void writeObject (ObjectOutputStream out) throws IOException {
    out.defaultWriteObject ();
    out.writeInt (CURRENT_SERIAL_VERSION);
  }

  private void readObject (ObjectInputStream in) throws IOException, ClassNotFoundException {
    in.defaultReadObject ();
    int version = in.readInt ();
 
}
TOP

Related Classes of cc.mallet.cluster.neighbor_evaluator.RankingNeighborEvaluator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.