package pl.piotrsukiennik.whowhen.classification.impl;
import org.codehaus.jackson.annotate.JsonProperty;
import java.util.Arrays;
/**
* @author Piotr Sukiennik
*/
public abstract class AbstractBinaryClassifier implements ILabelingClassifier {
@JsonProperty
protected String label;
protected AbstractBinaryClassifier() {
}
public void setLabel( String label ) {
this.label = label;
}
public String getLabel() {
return label;
}
public LabelingClassificationResult[] getClassificationDistribution( double[] vector ) {
LabelingClassificationResult labelingClassificationResult = getClassification( vector );
LabelingClassificationResult labelingClassificationResultInverse = inverseResult( labelingClassificationResult );
LabelingClassificationResult[] output = new LabelingClassificationResult[] { labelingClassificationResult, labelingClassificationResultInverse };
Arrays.sort( output, LabelingClassificationResult.PROBABILITY_COMPARATOR );
return output;
}
public LabelingClassificationResult inverseResult( LabelingClassificationResult labelingClassificationResult ) {
return new LabelingClassificationResult( "NOT_" + labelingClassificationResult.getLabel(), 1 - labelingClassificationResult.getProbability() );
}
}