if (xe.index() == ye.index()) { xe.set(f.apply(xe.get(), ye.get())); advanceThis = true; advanceThat = true; } else { if (xe.index() < ye.index()) { // f(x, 0) xe.set(f.apply(xe.get(), 0)); advanceThis = true; advanceThat = false; } else { x.setQuick(ye.index(), f.apply(0, ye.get())); advanceThis = false; advanceThat = true; xe.set(f.apply(xe.get(), 0)); advanceThis = true; advanceThat = false; } else if (ye != null) { // just the second one has nonzeros x.setQuick(ye.index(), f.apply(0, ye.get())); advanceThis = false; advanceThat = true;
@Override public Vector normalize(Vector vector) { if (vector.getNumNondefaultElements() == 0) { return vector; } // center non-zero elements double average = vector.norm(1) / vector.getNumNonZeroElements(); for (Vector.Element e : vector.nonZeroes()) { e.set(e.get() - average); } return super.normalize(vector); } }
@Override public Vector normalize(Vector vector) { if (vector.getNumNondefaultElements() == 0) { return vector; } // center non-zero elements double average = vector.norm(1) / vector.getNumNonZeroElements(); for (Vector.Element e : vector.nonZeroes()) { e.set(e.get() - average); } return super.normalize(vector); } }
@Override public void set(double value) { decorated.set(value); } }
private static void writeAllAboveThreshold(List<Cluster> clusterModels, Double clusterClassificationThreshold, SequenceFile.Writer writer, VectorWritable vw, Vector pdfPerCluster) throws IOException { Map<Text, Text> props = Maps.newHashMap(); for (Element pdf : pdfPerCluster.nonZeroes()) { if (pdf.get() >= clusterClassificationThreshold) { WeightedPropertyVectorWritable wvw = new WeightedPropertyVectorWritable(pdf.get(), vw.get(), props); int clusterIndex = pdf.index(); write(clusterModels, writer, wvw, clusterIndex); } } }
@Override public void map(IntWritable r, VectorWritable v, OutputCollector<IntWritable, VectorWritable> out, Reporter reporter) throws IOException { int row = r.get(); for (Vector.Element e : v.get().nonZeroes()) { RandomAccessSparseVector tmp = new RandomAccessSparseVector(newNumCols, 1); tmp.setQuick(row, e.get()); r.set(e.index()); out.collect(r, new VectorWritable(tmp)); } } }
private boolean consider(Vector.Element occurrenceA, Vector.Element occurrenceB) { int numNonZeroEntriesA = numNonZeroEntries.get(occurrenceA.index()); int numNonZeroEntriesB = numNonZeroEntries.get(occurrenceB.index()); double maxValueA = maxValues.get(occurrenceA.index()); double maxValueB = maxValues.get(occurrenceB.index()); return similarity.consider(numNonZeroEntriesA, numNonZeroEntriesB, maxValueA, maxValueB, threshold); }
private double calEmpiricalCountFeatureWeight(int d){ Vector featureColumn = dataSet.getColumn(d); double sum = 0; for (Vector.Element element: featureColumn.nonZeroes()){ int dataIndex = element.index(); double feature = element.get(); if (binaryLabels[dataIndex]==1){ sum += feature; } } return sum; }
@Override public Matrix cross(Vector other) { Matrix result = matrixLike(size, other.size()); Iterator<Vector.Element> it = iterateNonZero(); while (it.hasNext()) { Vector.Element e = it.next(); int row = e.index(); result.assignRow(row, other.times(getQuick(row))); } return result; }
public static Vector solveExplicit(VectorWritable ratingsWritable, OpenIntObjectHashMap<Vector> uOrM, double lambda, int numFeatures) { Vector ratings = ratingsWritable.get(); List<Vector> featureVectors = Lists.newArrayListWithCapacity(ratings.getNumNondefaultElements()); for (Vector.Element e : ratings.nonZeroes()) { int index = e.index(); featureVectors.add(uOrM.get(index)); } return AlternatingLeastSquaresSolver.solve(featureVectors, ratings, lambda, numFeatures); } }
@Override public void set(double value) { decorated.set(value); } }