Example usage for org.apache.mahout.math DenseVector get

List of usage examples for org.apache.mahout.math DenseVector get

Introduction

In this page you can find the example usage for org.apache.mahout.math DenseVector get.

Prototype

@Override
    public double get(int index) 

Source Link

Usage

From source file:org.qcri.pca.Norm2Job.java

/**
 * To compute the norm2 of a sparse matrix, iterate over sparse items and sum
 * square of the difference. After processing each row, add the sum of the
 * meanSquare of the zero-elements that were ignored in the sparse iteration.
 * //from  www .  j  a v  a  2s .c om
 * @param sparseVector
 *          the sparse vector of data
 * @param meanVector
 *          the vector of means
 * @param meanSquareSum
 *          sum of the square of all the means, including for zero and
 *          non-zero elements
 * @return
 */
static double norm2OfUncentralizedSparseVector(Vector sparseVector, DenseVector meanVector,
        double meanSquareSum) {
    double norm2 = 0;
    double meanSquareSumOfZeroElements = meanSquareSum;
    Iterator<Vector.Element> iterator = sparseVector.nonZeroes().iterator();
    while (iterator.hasNext()) {
        Vector.Element element = iterator.next();
        double v = element.get();
        double mean = meanVector.get(element.index());
        double diff = v - mean;
        diff *= diff;
        // cancel the effect of the non-zero element in meanSquareSum
        meanSquareSumOfZeroElements -= mean * mean;
        norm2 += diff;
    }
    // For all all zero items, the following has the sum of mean square
    norm2 += meanSquareSumOfZeroElements;
    return norm2;
}

From source file:root.hap.availability.AvailabilityReducer.java

License:Apache License

private void updateTau(Context context, DenseVector RLevelBelow, DenseVector CLevelBelow, DenseVector T,
        int reducerColNum, int reducerLevelNum, int N, String tau) throws IOException, InterruptedException {

    double sumOfPositives = 0.0;
    for (int rowNum = 0; rowNum < N; rowNum++) {
        if (rowNum == reducerColNum) {
            continue;
        }/*w w w  .j  av  a 2  s  .  co  m*/
        double value = RLevelBelow.get(rowNum);
        sumOfPositives += (value > 0) ? value : 0;
    }

    double rhoValue = RLevelBelow.get(reducerColNum);
    double exemplarValue = CLevelBelow.get(0); // "CValue"

    double tauValue = rhoValue + exemplarValue + sumOfPositives;

    T.setQuick(0, tauValue);
    VectorWritable TWritable = new VectorWritable(T);

    context.write(new Text(reducerColNum + "\t" + reducerLevelNum + "\t" + tau), TWritable);
}

From source file:root.hap.availability.AvailabilityReducer.java

License:Apache License

private void updateAvailability(Context context, DenseVector A, DenseVector R, DenseVector S, DenseVector P,
        DenseVector C, int reducerColNum, int reducerLevelNum, int N, String availability)
        throws IOException, InterruptedException {

    DenseVector oldA = A.clone();//from www  . jav  a  2  s .  c  o  m

    // get positive values into RPositive
    DenseVector RPositive = R.clone();
    for (int rowNum = 0; rowNum < N; rowNum++) {
        double RValue = RPositive.get(rowNum);
        if (RValue < 0) {
            RPositive.setQuick(rowNum, 0);
        }
    }

    // reset diagonal value from R
    RPositive.setQuick(reducerColNum, R.get(reducerColNum));

    // sum R Positive values
    double RPSum = RPositive.zSum();

    double CVal = C.get(0);
    double PVal = P.get(0);

    double CHat = CVal + PVal;

    // sum together CHat and RPSum into a vector
    A.assign(CHat + RPSum);

    A = (DenseVector) A.minus(RPositive);

    for (int rowNum = 0; rowNum < N; rowNum++) {

        if (rowNum == reducerColNum) {
            continue;
        }

        double value = A.get(rowNum) < 0 ? A.get(rowNum) : 0;

        A.setQuick(rowNum, value);
    }

    double lambda = context.getConfiguration().getFloat("lambda", 0);
    A = (DenseVector) A.times(1 - lambda);
    oldA = (DenseVector) oldA.times(lambda);
    A = (DenseVector) A.plus(oldA);

    VectorWritable AWritable = new VectorWritable(A);

    context.write(new Text(reducerColNum + "\t" + reducerLevelNum + "\t" + availability), AWritable);

}

From source file:root.hap.cluster.ClusterReducer.java

License:Apache License

private void updateExemplars(Context context, DenseVector A, DenseVector diagA, DenseVector R,
        DenseVector diagR, int reducerRowNum, int reducerLevelNum, int N)
        throws IOException, InterruptedException {

    boolean[] validExemplars = new boolean[N];
    boolean validExist = false;
    Arrays.fill(validExemplars, false);

    for (int diagIter = 0; diagIter < N; diagIter++) {
        double diagVal = diagA.get(diagIter) + diagR.get(diagIter);
        if (diagVal > 0) {
            validExemplars[diagIter] = true;
            validExist = true;// ww  w .  java  2  s .com
        }
    }

    DenseVector sum = (DenseVector) A.plus(R);
    double maxValue = Double.NEGATIVE_INFINITY;
    int maxValueIndex = sum.maxValueIndex();

    if (validExist) {

        for (int diagIter = 0; diagIter < N; diagIter++) {

            double validValue = sum.get(diagIter);
            if (validExemplars[diagIter] && validValue > maxValue) {
                maxValue = validValue;
                maxValueIndex = diagIter;
            }

        }

    } else {

        maxValue = sum.maxValue();
        maxValueIndex = sum.maxValueIndex();

    }

    Text output = new Text(maxValueIndex + "\t" + reducerRowNum + "\t" + reducerLevelNum);

    // Sentinel: In case an invalid exemplar ID is passed to output.
    if (maxValueIndex != -1) {
        context.write(new Text(), output);
    }
}

From source file:root.hap.responsibility.ResponsibilityReducer.java

License:Apache License

private void updateExemplars(Context context, DenseVector A, DenseVector R, DenseVector diagA,
        DenseVector diagR, DenseVector C, int reducerRowNum, int reducerLevelNum, int N, String exemplar)
        throws IOException, InterruptedException {

    boolean[] validExemplars = new boolean[N];
    boolean validExist = false;
    Arrays.fill(validExemplars, false);

    for (int diagIter = 0; diagIter < N; diagIter++) {
        double diagVal = diagA.get(diagIter) + diagR.get(diagIter);
        if (diagVal > 0) {
            validExemplars[diagIter] = true;
            validExist = true;/* w w  w  .j  a v a 2 s . c om*/
        }
    }

    DenseVector sum = (DenseVector) A.plus(R);
    double maxValue = Double.NEGATIVE_INFINITY;

    if (validExist) {

        for (int diagIter = 0; diagIter < N; diagIter++) {

            double validValue = sum.get(diagIter);
            if (validExemplars[diagIter] && validValue > maxValue) {
                maxValue = validValue;
            }

        }

    } else {

        maxValue = sum.maxValue();

    }

    C.setQuick(0, maxValue);

    VectorWritable CWritable = new VectorWritable(C);

    context.write(new Text(reducerRowNum + "\t" + reducerLevelNum + "\t" + exemplar), CWritable);

}

From source file:root.hap.responsibility.ResponsibilityReducer.java

License:Apache License

private void updateResponsibility(Context context, DenseVector A, DenseVector S, DenseVector R, DenseVector T,
        int reducerLevelNum, int reducerRowNum, int N, String responsibilty)
        throws IOException, InterruptedException {

    DenseVector oldR = R.clone();/*from  w w  w.  ja  va  2  s  .  c  o m*/
    DenseVector sum = (DenseVector) A.plus(S);

    double maxValue = sum.maxValue();
    int maxValueIndex = sum.maxValueIndex();
    maxValue *= -1;

    sum.set(maxValueIndex, Double.NEGATIVE_INFINITY);

    double tau = T.get(0);

    double YH = Math.min(maxValue, tau);

    double actualMax = sum.maxValue();
    actualMax *= -1;

    double YH2 = Math.min(actualMax, tau);

    R = (DenseVector) S.plus(YH);
    R.setQuick(maxValueIndex, S.get(maxValueIndex) + YH2);

    // Dampen
    double lambda = context.getConfiguration().getFloat("lambda", 0);
    R = (DenseVector) R.times(1 - lambda);
    oldR = (DenseVector) oldR.times(lambda);
    R = (DenseVector) R.plus(oldR);

    VectorWritable RWritable = new VectorWritable(R);

    context.write(new Text(reducerRowNum + "\t" + reducerLevelNum + "\t" + responsibilty), RWritable);

}