package quickml.supervised.classifier;
import quickml.data.AttributesMap;
import quickml.data.PredictionMap;
import java.io.Serializable;
import java.util.Set;
/**
* Created by alexanderhawk on 8/17/14.
*/
//where do we want Classifier as a generic type...in downsampling PMB.
public abstract class AbstractClassifier implements Classifier {
private static final long serialVersionUID = -5052476771686106526L;
public double getProbability(AttributesMap attributes, Serializable classification) {
return predict(attributes).get(classification);
}
public double getProbabilityWithoutAttributes(AttributesMap attributes, Serializable classification, Set<String> attributesToIgnore) {
return predictWithoutAttributes(attributes, attributesToIgnore).get(classification);
}
public Serializable getClassificationByMaxProb(AttributesMap attributes) {
PredictionMap predictions = predict(attributes);
Serializable mostProbableClass = null;
double probabilityOfMostProbableClass = 0;
for (Serializable key : predictions.keySet()) {
if (predictions.get(key).doubleValue() > probabilityOfMostProbableClass) {
mostProbableClass = key;
probabilityOfMostProbableClass = predictions.get(key).doubleValue();
}
}
return mostProbableClass;
}
}