summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java
diff options
context:
space:
mode:
authorErich Schubert <erich@debian.org>2012-12-14 20:45:15 +0100
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:35 +0000
commit357b2761a2c0ded8cad5e4d3c1e667b7639ff7a6 (patch)
tree3dd8947bb70a67c221adc3cd4359ba1d385e2f3c /src/de/lmu/ifi/dbs/elki/data/projection/FeatureSelection.java
parent4343785ebed9d4145f417d86d581f18a0d31e4ac (diff)
parentb7b404fd7a726774d442562d11659d7b5368cdb9 (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.java37
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