diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java b/src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java index 093cf652..be9ba959 100644 --- a/src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java +++ b/src/de/lmu/ifi/dbs/elki/distance/similarityfunction/kernel/FooKernelFunction.java @@ -43,7 +43,7 @@ import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.IntParameter; * * @author Simon Paradies */ -public class FooKernelFunction extends AbstractPrimitiveDistanceFunction<NumberVector<?, ?>, DoubleDistance> implements PrimitiveSimilarityFunction<NumberVector<?, ?>, DoubleDistance> { +public class FooKernelFunction extends AbstractPrimitiveDistanceFunction<NumberVector<?>, DoubleDistance> implements PrimitiveSimilarityFunction<NumberVector<?>, DoubleDistance> { /** * The default max_degree. */ @@ -52,7 +52,7 @@ public class FooKernelFunction extends AbstractPrimitiveDistanceFunction<NumberV /** * Parameter for the maximum degree */ - public static final OptionID MAX_DEGREE_ID = OptionID.getOrCreateOptionID("fookernel.max_degree", "The max degree of the" + FooKernelFunction.class.getSimpleName() + ". Default: " + DEFAULT_MAX_DEGREE); + public static final OptionID MAX_DEGREE_ID = new OptionID("fookernel.max_degree", "The max degree of the" + FooKernelFunction.class.getSimpleName() + ". Default: " + DEFAULT_MAX_DEGREE); /** * Degree of the polynomial kernel function @@ -78,25 +78,25 @@ public class FooKernelFunction extends AbstractPrimitiveDistanceFunction<NumberV * an instance of {@link DoubleDistance DoubleDistance}. */ @Override - public DoubleDistance similarity(final NumberVector<?, ?> o1, final NumberVector<?, ?> o2) { + public DoubleDistance similarity(final NumberVector<?> o1, final NumberVector<?> o2) { if(o1.getDimensionality() != o2.getDimensionality()) { throw new IllegalArgumentException("Different dimensionality of FeatureVectors\n first argument: " + o1.toString() + "\n second argument: " + o2.toString()); } double sim = 0.0; // iterate over differently powered dimensions - for(int degree = 1; degree <= max_degree; degree++) { + for(int degree = 0; degree < max_degree; degree++) { sim += Math.pow(o1.doubleValue(degree) * o2.doubleValue(degree), degree); } return new DoubleDistance(sim); } @Override - public DoubleDistance distance(final NumberVector<?, ?> fv1, final NumberVector<?, ?> fv2) { + public DoubleDistance distance(final NumberVector<?> fv1, final NumberVector<?> fv2) { return new DoubleDistance(Math.sqrt(similarity(fv1, fv1).doubleValue() + similarity(fv2, fv2).doubleValue() - 2 * similarity(fv1, fv2).doubleValue())); } @Override - public VectorFieldTypeInformation<? super NumberVector<?, ?>> getInputTypeRestriction() { + public VectorFieldTypeInformation<? super NumberVector<?>> getInputTypeRestriction() { return TypeUtil.NUMBER_VECTOR_FIELD; } @@ -106,7 +106,7 @@ public class FooKernelFunction extends AbstractPrimitiveDistanceFunction<NumberV } @Override - public <T extends NumberVector<?, ?>> DistanceSimilarityQuery<T, DoubleDistance> instantiate(Relation<T> database) { + public <T extends NumberVector<?>> DistanceSimilarityQuery<T, DoubleDistance> instantiate(Relation<T> database) { return new PrimitiveDistanceSimilarityQuery<T, DoubleDistance>(database, this, this); } |