Add aggregate() methods for Vector
----------------------------------

                 Key: MAHOUT-209
                 URL: https://issues.apache.org/jira/browse/MAHOUT-209
             Project: Mahout
          Issue Type: Improvement
          Components: Matrix
         Environment: all
            Reporter: Jake Mannix
            Priority: Minor
             Fix For: 0.3


As discussed in MAHOUT-165 at some point, Vector (and Matrix, but let's put 
that on a separate ticket) could do with a nice exposure of methods like the 
following:

{code}
// this can get optimized, of course

  public double aggregate(Vector other, BinaryFunction aggregator, 
BinaryFunction combiner) {
    double result = 0;
    for(int i=0; i<size(); i++) {
      result = aggregator.apply(result, combiner.apply(getQuick(i), 
other.getQuick(i)));
    }
    return result;
  }
{code}

this is good for generalized inner products and distances.  Also nice:

{code}
  public double aggregate(BinaryFunction aggregator, UnaryFunction map) {
    double result = 0;
    for(int i=0; i<size(); i++) {
      result = aggregator.apply(result, map.apply(getQuick(i)) );
    }
    return result;
  }
{code}

Which generalizes norms and statistics (mean, median, stdDev) and things like 
that (number of positive values, or negative values, etc...).

These kind of thing exists in Colt, and we could just surface it up to the top.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to