/** Initializes random centroids. */ private void initCentroids() { IntOpenHashSet set = new IntOpenHashSet(); Random rand = new Random(RAND_SEED); d_centroid = new double[K*D]; d_scala = new double[K]; while (set.size() < K) set.add(rand.nextInt(N)); int[] unit; int k = 0; for (IntCursor cur : set) { unit = v_units.get(cur.value); for (int index : unit) d_centroid[getCentroidIndex(k, index)] = 1; d_scala[k++] = Math.sqrt(unit.length); } }
/** Initializes random centroids. */ private void initCentroids() { IntOpenHashSet set = new IntOpenHashSet(); Random rand = new Random(RAND_SEED); d_centroid = new double[K*D]; d_scala = new double[K]; while (set.size() < K) set.add(rand.nextInt(N)); int[] unit; int k = 0; for (IntCursor cur : set) { unit = v_units.get(cur.value); for (int index : unit) d_centroid[getCentroidIndex(k, index)] = 1; d_scala[k++] = Math.sqrt(unit.length); } }
/** Initializes random centroids. */ private void initCentroids() { IntOpenHashSet set = new IntOpenHashSet(); Random rand = new Random(RAND_SEED); d_centroid = new double[K*D]; d_scala = new double[K]; while (set.size() < K) set.add(rand.nextInt(N)); int[] unit; int k = 0; for (IntCursor cur : set) { unit = v_units.get(cur.value); for (int index : unit) d_centroid[getCentroidIndex(k, index)] = 1; d_scala[k++] = Math.sqrt(unit.length); } }
private BitSet[] createBitSets(IntOpenHashSet hashSets[], IntOpenHashSet mergedHashSet) { BitSet bitSets[] = new BitSet[hashSets.length]; for (int i = 0; i < bitSets.length; ++i) { bitSets[i] = new BitSet(mergedHashSet.size()); } int pos = 0; for (int i = 0; i < mergedHashSet.keys.length; i++) { if (mergedHashSet.allocated[i]) { for (int j = 0; j < bitSets.length; ++j) { if (hashSets[j].contains(mergedHashSet.keys[i])) { bitSets[j].set(pos); } } ++pos; } } return bitSets; }