~ubuntu-branches/ubuntu/vivid/elki/vivid

« back to all changes in this revision

Viewing changes to src/de/lmu/ifi/dbs/elki/datasource/filter/normalization/InverseDocumentFrequencyNormalization.java

  • Committer: Package Import Robot
  • Author(s): Erich Schubert
  • Date: 2012-12-14 20:45:15 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20121214204515-4m0d0er9ivtu5w9d
Tags: 0.5.5-1
New upstream release: 0.5.5 interim release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 * @author Erich Schubert
41
41
 * 
42
42
 * @apiviz.uses SparseNumberVector
 
43
 * 
 
44
 * @param <V> Vector type
43
45
 */
44
 
public class InverseDocumentFrequencyNormalization<V extends SparseNumberVector<V, ?>> extends AbstractNormalization<V> {
 
46
public class InverseDocumentFrequencyNormalization<V extends SparseNumberVector<?>> extends AbstractNormalization<V> {
45
47
  /**
46
 
   * The IDF storage
 
48
   * The IDF storage.
47
49
   */
48
50
  TIntDoubleMap idf = new TIntDoubleHashMap();
49
51
 
50
52
  /**
51
 
   * The number of objects in the dataset
 
53
   * The number of objects in the dataset.
52
54
   */
53
55
  int objcnt = 0;
54
56
 
73
75
    BitSet b = featureVector.getNotNullMask();
74
76
    for(int i = b.nextSetBit(0); i >= 0; i = b.nextSetBit(i + 1)) {
75
77
      if(featureVector.doubleValue(i) >= 0.0) {
76
 
        Number c = idf.get(i);
77
 
        if(c == null) {
78
 
          idf.put(i, 1);
79
 
        }
80
 
        else {
81
 
          idf.put(i, c.intValue() + 1);
82
 
        }
 
78
        idf.put(i, idf.get(i) + 1);
83
79
      }
84
80
    }
85
81
    objcnt += 1;
103
99
    for(int i = b.nextSetBit(0); i >= 0; i = b.nextSetBit(i + 1)) {
104
100
      vals.put(i, (float) (featureVector.doubleValue(i) * idf.get(i)));
105
101
    }
106
 
    return featureVector.newNumberVector(vals, featureVector.getDimensionality());
 
102
    return ((SparseNumberVector.Factory<V, ?>) factory).newNumberVector(vals, featureVector.getDimensionality());
107
103
  }
108
104
 
109
105
  @Override
113
109
    for(int i = b.nextSetBit(0); i >= 0; i = b.nextSetBit(i + 1)) {
114
110
      vals.put(i, (float) (featureVector.doubleValue(i) / idf.get(i)));
115
111
    }
116
 
    return featureVector.newNumberVector(vals, featureVector.getDimensionality());
 
112
    return ((SparseNumberVector.Factory<V, ?>) factory).newNumberVector(vals, featureVector.getDimensionality());
117
113
  }
118
114
 
119
115
  @Override