diff options
author | Erich Schubert <erich@debian.org> | 2012-12-14 20:45:15 +0100 |
---|---|---|
committer | Andrej Shadura <andrewsh@debian.org> | 2019-03-09 22:30:35 +0000 |
commit | 357b2761a2c0ded8cad5e4d3c1e667b7639ff7a6 (patch) | |
tree | 3dd8947bb70a67c221adc3cd4359ba1d385e2f3c /src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java | |
parent | 4343785ebed9d4145f417d86d581f18a0d31e4ac (diff) | |
parent | b7b404fd7a726774d442562d11659d7b5368cdb9 (diff) |
Import Debian changes 0.5.5-1
elki (0.5.5-1) unstable; urgency=low
* New upstream release: 0.5.5 interim release.
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java b/src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java index 04878aea..bcb64800 100644 --- a/src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java +++ b/src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java @@ -23,9 +23,11 @@ package de.lmu.ifi.dbs.elki.data.projection; */ import de.lmu.ifi.dbs.elki.data.FeatureVector; +import de.lmu.ifi.dbs.elki.data.FeatureVector.Factory; import de.lmu.ifi.dbs.elki.data.NumberVector; import de.lmu.ifi.dbs.elki.data.type.SimpleTypeInformation; import de.lmu.ifi.dbs.elki.data.type.TypeInformation; +import de.lmu.ifi.dbs.elki.data.type.VectorFieldTypeInformation; import de.lmu.ifi.dbs.elki.data.type.VectorTypeInformation; import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.ArrayAdapter; import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.ArrayLikeUtil; @@ -39,24 +41,24 @@ import de.lmu.ifi.dbs.elki.utilities.datastructures.arraylike.SubsetArrayAdapter * @param <V> Vector type * @param <F> Feature type */ -public class FeatureSelection<V extends FeatureVector<V, F>, F> implements Projection<V, V> { +public class FeatureSelection<V extends FeatureVector<F>, F> implements Projection<V, V> { /** - * Minimum dimensionality required for projection + * Minimum dimensionality required for projection. */ private int mindim; /** - * Object factory + * Object factory. */ - private V factory; + private FeatureVector.Factory<V, F> factory; /** - * Output dimensionality + * Output dimensionality. */ private int dimensionality; /** - * Array adapter + * Array adapter. */ protected ArrayAdapter<F, V> adapter; @@ -66,43 +68,44 @@ public class FeatureSelection<V extends FeatureVector<V, F>, F> implements Proje * @param dims Dimensions * @param factory Object factory */ - public FeatureSelection(int[] dims, V factory) { + public FeatureSelection(int[] dims, FeatureVector.Factory<V, F> factory) { this.adapter = new SubsetArrayAdapter<F, V>(getAdapter(factory), dims); this.factory = factory; this.dimensionality = dims.length; - int mindim = 0; + int mind = 0; for(int dim : dims) { - mindim = Math.max(mindim, dim + 1); + mind = Math.max(mind, dim + 1); } - this.mindim = mindim; + this.mindim = mind; } @Override public V project(V data) { - return data.newFeatureVector(data, adapter); + return factory.newFeatureVector(data, adapter); } /** * Choose the best adapter for this. * * @param factory Object factory, for type inference + * @param <V> Vector type + * @param <F> Value type * @return Adapter */ @SuppressWarnings("unchecked") - private static <V extends FeatureVector<V, F>, F> ArrayAdapter<F, ? super V> getAdapter(V factory) { - if(factory instanceof NumberVector) { - ArrayAdapter<?, ?> ret = ArrayLikeUtil.numberVectorAdapter((NumberVector<?, ?>) factory); - return (ArrayAdapter<F, ? super V>) ret; + private static <V extends FeatureVector<F>, F> ArrayAdapter<F, ? super V> getAdapter(Factory<V, F> factory) { + if(factory instanceof NumberVector.Factory) { + return (ArrayAdapter<F, ? super V>) ArrayLikeUtil.NUMBERVECTORADAPTER; } - return ArrayLikeUtil.featureVectorAdapter(factory); + return (ArrayAdapter<F, ? super V>) ArrayLikeUtil.FEATUREVECTORADAPTER; } @Override public SimpleTypeInformation<V> getOutputDataTypeInformation() { @SuppressWarnings("unchecked") final Class<V> cls = (Class<V>) factory.getClass(); - return new VectorTypeInformation<V>(cls, dimensionality, dimensionality); + return new VectorFieldTypeInformation<V>(cls, dimensionality); } @Override |