public class WeightedEuclideanDistanceMetric extends AbstractCloneableSerializable implements Semimetric<Vectorizable>
Modifier and Type | Field and Description |
---|---|
protected Vector |
weights
The weights assigned to each dimension for the distance.
|
Constructor and Description |
---|
WeightedEuclideanDistanceMetric()
Creates a new
WeightedEuclideanDistanceMetric with no initial
weights. |
WeightedEuclideanDistanceMetric(Vector weights)
Creates a new
WeightedEuclideanDistanceMetric with the given
weights. |
Modifier and Type | Method and Description |
---|---|
WeightedEuclideanDistanceMetric |
clone()
This makes public the clone method on the
Object class and
removes the exception that it throws. |
double |
evaluate(Vectorizable first,
Vectorizable second)
Evaluates the weighted Euclidean distance between two vectors.
|
int |
getInputDimensionality()
Gets the expected dimensionality of the input vectors for this distance
metric.
|
Vector |
getWeights()
Gets the vector of weights for each dimension.
|
void |
setWeights(Vector weights)
Sets the vector of weights for each dimension.
|
protected Vector weights
public WeightedEuclideanDistanceMetric()
WeightedEuclideanDistanceMetric
with no initial
weights.public WeightedEuclideanDistanceMetric(Vector weights)
WeightedEuclideanDistanceMetric
with the given
weights.weights
- The vector of weights for each dimension. The weights cannot be
negative or else this will create an invalid metric.public WeightedEuclideanDistanceMetric clone()
AbstractCloneableSerializable
Object
class and
removes the exception that it throws. Its default behavior is to
automatically create a clone of the exact type of object that the
clone is called on and to copy all primitives but to keep all references,
which means it is a shallow copy.
Extensions of this class may want to override this method (but call
super.clone()
to implement a "smart copy". That is, to target
the most common use case for creating a copy of the object. Because of
the default behavior being a shallow copy, extending classes only need
to handle fields that need to have a deeper copy (or those that need to
be reset). Some of the methods in ObjectUtil
may be helpful in
implementing a custom clone method.
Note: The contract of this method is that you must use
super.clone()
as the basis for your implementation.clone
in interface CloneableSerializable
clone
in class AbstractCloneableSerializable
public double evaluate(Vectorizable first, Vectorizable second)
evaluate
in interface DivergenceFunction<Vectorizable,Vectorizable>
first
- The first vector.second
- The second vector.public int getInputDimensionality()
public Vector getWeights()
public void setWeights(Vector weights)
weights
- The vector of weights for each dimension. The weights cannot be
negative or else this will create an invalid metric.