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

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

Introduction

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

Prototype

@Override
    public double get(String rowLabel, String columnLabel) 

Source Link

Usage

From source file:org.eclipse.tracecompass.internal.totalads.algorithms.hiddenmarkovmodel.HmmMahout.java

License:Open Source License

/**
 * Initializes HMM with the customized transition, emission and initial
 * probabilities rather than using Mahout's initialization. Specially this
 * function makes sure that initial probabilities are equal.
 *
 * @param numSymbols//from w w w  .  j a va  2s  .com
 *            Number of Symbols
 * @param numStates
 *            Number of States
 */
public void initializeHMMWithCustomizeInitialValues(int numSymbols, int numStates) {
    // Generating transition probabilities with random numbers
    Random random = new Random();
    double start = 0.0001;
    double end = 1.0000;
    DenseMatrix tansitionProbabilities = new DenseMatrix(numStates, numStates);

    // Measuring Transition Probabilities
    double[] rowSums = new double[numStates];
    Arrays.fill(rowSums, 0.0);

    for (int row = 0; row < numStates; row++) {
        for (int col = 0; col < numStates; col++) {
            tansitionProbabilities.set(row, col, getRandomRealNumber(start, end, random));
            rowSums[row] += tansitionProbabilities.get(row, col);
        }
    }

    for (int row = 0; row < numStates; row++) {
        for (int col = 0; col < numStates; col++) {
            tansitionProbabilities.set(row, col, (tansitionProbabilities.get(row, col) / rowSums[row]));
        }
    }

    // Assigning initial state probabilities Pi; i.e. probabilities at time
    // 1
    DenseVector initialProbabilities = new DenseVector(numStates);
    double initialProb = 1 / ((double) numStates);
    for (int idx = 0; idx < numStates; idx++) {
        initialProbabilities.set(idx, initialProb);
    }

    // Measuring Emission probabilities of each symbol
    DenseMatrix emissionProbabilities = new DenseMatrix(numStates, numSymbols);
    Arrays.fill(rowSums, 0.0);// Utilizing the same rowSums variable
    random = new Random();

    for (int row = 0; row < numStates; row++) {
        for (int col = 0; col < numSymbols; col++) {
            emissionProbabilities.set(row, col, getRandomRealNumber(start, end, random));
            rowSums[row] += emissionProbabilities.get(row, col);
        }
    }

    for (int row = 0; row < numStates; row++) {
        for (int col = 0; col < numSymbols; col++) {
            emissionProbabilities.set(row, col, emissionProbabilities.get(row, col) / rowSums[row]);
        }
    }

    fHmm = new HmmModel(tansitionProbabilities, emissionProbabilities, initialProbabilities);

}

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

License:Apache License

private void verifyXtX(DenseMatrix xtxMatrix) {
    Assert.assertEquals("The computed xtx must have " + xsize + " rows!", xsize, xtxMatrix.numRows());
    Assert.assertEquals("The computed xtx must have " + xsize + " cols!", xsize, xtxMatrix.numCols());
    for (int r = 0; r < xsize; r++)
        for (int c = 0; c < xsize; c++)
            Assert.assertEquals("The xtx[" + r + "][" + c + "] is incorrect: ", xtx[r][c], xtxMatrix.get(r, c),
                    EPSILON);/*from w  ww .j a va2s .  c  o  m*/
}