/** * Convert a {@link FeatureVector} to an array of doubles using * {@link FeatureVector#asDoubleVector()}. * * @param feature * the feature * @param bias * any bias term to add. if <=0 then no term is added; otherwise * an extra element will be added to the end of the vector set to * this value. * @return the double[] version of the feature */ public static double[] convertDense(FeatureVector feature, double bias) { final double[] arr = feature.asDoubleVector(); if (bias <= 0) return arr; final double[] arr2 = new double[arr.length + 1]; System.arraycopy(arr, 0, arr2, 0, arr.length); arr2[arr.length] = bias; return arr2; } }
/** * Convert a {@link FeatureVector} to a {@link FloatFV} by first converting * to a {@link DoubleFV}. * * @param fv * the {@link DoubleFV} * @return the {@link FloatFV} */ public static FloatFV toFloatFV(FeatureVector fv) { return toFloatFV(fv.asDoubleFV()); } }
@Override public int numDimensions() { return data[0].length(); } };
@Override public Boolean call() { try { final int D = ds.getData(0).length(); final T[] points = ds.createTemporaryArray(stopRow - startRow); ds.getData(startRow, stopRow, points); final int[] argmins = new int[points.length]; final float[] mins = new float[points.length]; nno.searchNN(points, argmins, mins); synchronized (centroids_accum) { for (int i = 0; i < points.length; ++i) { final int k = argmins[i]; final double[] vector = points[i].asDoubleVector(); for (int d = 0; d < D; ++d) { centroids_accum[k][d] += vector[d]; } counts[k] += 1; } } } catch (final Exception e) { e.printStackTrace(); } return true; } }
final T[] centroids = result.centroids; final int K = centroids.length; final int D = centroids[0].length(); final int N = data.size(); final double[][] centroids_accum = new double[K][D]; final double diff = newValue - centroids[k].getAsDouble(d); ssd += diff * diff; centroids[k].setFromDouble(d, newValue);
@SuppressWarnings("unchecked") @Override public <Q> Q[] asDataArray(Q[] a) { if (a.length < size()) { System.out.println(a.getClass()); a = (Q[]) Array.newInstance(a.getClass().getComponentType(), size()); } int i = 0; for (final T t : this) { a[i++] = (Q) t.getFeatureVector().getVector(); } return a; }
@Override public byte[] binaryHeader() { return ("LFVI" + "." + new String(location.binaryHeader()) + "." + new String(feature.asciiHeader())).getBytes(); }
final double[] array = feature.asDoubleVector(); int numZero = 0; out[out.length - 1] = new FeatureNode(feature.length() + 1, bias);
@SuppressWarnings("unchecked") @Override public <Q> Q[] asDataArray(Q[] a) { if (a.length < size()) { System.out.println(a.getClass()); a = (Q[]) Array.newInstance(a.getClass().getComponentType(), size()); } int i = 0; for (final T t : this) { a[i++] = (Q) t.getFeatureVector().getVector(); } return a; }
@Override public String asciiHeader() { return this.getClass().getName() + "." + location.asciiHeader() + "." + feature.asciiHeader(); }
/** * Learn the PCA basis of the given feature vectors. * * @param data * the feature vectors to apply PCA to. */ public void learnBasis(FeatureVector[] data) { final double[][] d = new double[data.length][]; for (int i = 0; i < data.length; i++) { d[i] = data[i].asDoubleVector(); } learnBasis(d); }
@Override public int numDimensions() { return data[0].length(); } };
/** * Convert a {@link FeatureVector} to a {@link FloatFV} by first converting * to a {@link DoubleFV}. * * @param fv * the {@link DoubleFV} * @return the {@link FloatFV} */ public static FloatFV toFloatFV(FeatureVector fv) { return toFloatFV(fv.asDoubleFV()); } }
@SuppressWarnings("unchecked") @Override public <Q> Q[] asDataArray(Q[] a) { if (a.length < size()) { a = (Q[]) Array.newInstance(a.getClass().getComponentType(), size()); } int i = 0; for (final T t : this) { a[i++] = (Q) t.getFeatureVector().getVector(); } return a; }
@Override public String asciiHeader() { return this.getClass().getName() + "." + location.asciiHeader() + "." + feature.asciiHeader(); }
/** * Learn the PCA basis of the given feature vectors. * * @param data * the feature vectors to apply PCA to. */ public void learnBasis(Collection<? extends FeatureVector> data) { final double[][] d = new double[data.size()][]; int i = 0; for (final FeatureVector fv : data) { d[i++] = fv.asDoubleVector(); } learnBasis(d); }
@Override public String toString() { String str = ""; str += "ByteCentroidsResult" + "\n"; str += "No. of Clusters: " + centroids.length + "\n"; str += "No. of Dimensions: " + centroids[0].length() + "\n"; return str; }
/** * This searches through the keypoints in klist for the closest match to key. */ protected T findMatch(T query, List<T> features) { double distsq = Double.MAX_VALUE; T minkey = null; // find closest match for (final T target : features) { final double dsq = target.getFeatureVector().asDoubleFV() .compare(query.getFeatureVector().asDoubleFV(), DoubleFVComparison.SUM_SQUARE); if (dsq < distsq) { distsq = dsq; minkey = target; } } return minkey; }
@SuppressWarnings("unchecked") @Override public <Q> Q[] asDataArray(Q[] a) { if (a.length < size()) { a = (Q[]) Array.newInstance(a.getClass().getComponentType(), size()); } int i = 0; for (final T t : this) { a[i++] = (Q) t.getFeatureVector().getVector(); } return a; }
@Override public byte[] binaryHeader() { return ("LFVI" + "." + new String(location.binaryHeader()) + "." + new String(feature.asciiHeader())).getBytes(); }