package shared;
/**
* A distance measure that mixes
* several distance measures
* @author Andrew Guillory gtg008g@mail.gatech.edu
* @version 1.0
*/
public class MixedDistanceMeasure extends AbstractDistanceMeasure{
/**
* The distance measure for each attribute
*/
private AttributeType[] types;
/**
* Make a new mixed distance measure
* @param measures the measures to use
*/
public MixedDistanceMeasure(AttributeType[] types) {
this.types = types;
}
/**
* @see memory.DistanceMeasure#distance(double[], double[])
*/
public double value(Instance va, Instance vb) {
double distance = 0;
for (int i = 0; i < va.size(); i++) {
if (types[i] == AttributeType.CONTINUOUS) {
distance += (va.getContinuous(i) - vb.getContinuous(i))
* (va.getContinuous(i) - vb.getContinuous(i));
} else {
if (va.getDiscrete(i) != vb.getDiscrete(i)) {
distance += 1;
}
}
}
return distance;
}
}