package pl.piotrsukiennik.whowhen.classification.impl.quality; import org.codehaus.jackson.annotate.JsonAutoDetect; import org.codehaus.jackson.annotate.JsonProperty; import pl.piotrsukiennik.whowhen.shared.util.math.MathUtil; import pl.piotrsukiennik.whowhen.shared.util.math.MeanCalculator; import java.util.List; /** * @author Piotr Sukiennik */ @JsonAutoDetect public class EuclidianDistanceClassifier extends FeaturesQualityThresholdClassifier implements java.io.Serializable { EuclidianDistanceClassifier() { super(); } @JsonProperty private double[] centroid; public void train( List<double[]> data ) { centroid = MeanCalculator.calculateMean( data, MeanCalculator.MeanMethod.ARITHMETIC ); super.train( data ); } @Override public double evaluateQuality( double[] arr ) { return MathUtil.euclidianDistance( centroid, arr ); } @Override public String toString() { return "EuclidianDistanceClassifier{" + ", centroid=" + centroid + '}'; } }