Example usage for org.apache.commons.math.linear RealVector dotProduct

List of usage examples for org.apache.commons.math.linear RealVector dotProduct

Introduction

In this page you can find the example usage for org.apache.commons.math.linear RealVector dotProduct.

Prototype

double dotProduct(double[] v);

Source Link

Document

Compute the dot product.

Usage

From source file:datafu.pig.hash.lsh.metric.Cosine.java

/**
 * Cosine similarity./* ww w  .ja v  a 2s  .c om*/
 * @param v1
 * @param v2
 * @return The cosine of the angle between the vectors
 */
public static double distance(RealVector v1, RealVector v2) {
    return (v1.dotProduct(v2)) / (v1.getNorm() * v2.getNorm());
}

From source file:com.opengamma.analytics.math.matrix.CommonsMatrixAlgebra.java

/**
 * {@inheritDoc}//  w ww . j av a  2  s. co  m
 */
@Override
public double getInnerProduct(final Matrix<?> m1, final Matrix<?> m2) {
    Validate.notNull(m1, "m1");
    Validate.notNull(m2, "m2");
    if (m1 instanceof DoubleMatrix1D && m2 instanceof DoubleMatrix1D) {
        final RealVector t1 = CommonsMathWrapper.wrap((DoubleMatrix1D) m1);
        final RealVector t2 = CommonsMathWrapper.wrap((DoubleMatrix1D) m2);
        return t1.dotProduct(t2);
    }
    throw new IllegalArgumentException(
            "Can only find inner product of DoubleMatrix1D; have " + m1.getClass() + " and " + m2.getClass());
}

From source file:eu.amidst.core.exponentialfamily.EF_Normal_NormalParents2.java

/**
 * {@inheritDoc}//from   w  ww  . j  av  a2 s  .  co  m
 */
@Override
public void updateNaturalFromMomentParameters() {

    /*
     * First step: means and convariances
     */
    CompoundVector globalMomentParam = (CompoundVector) this.momentParameters;
    double mean_X = globalMomentParam.getXYbaseMatrix().getEntry(0);
    RealVector mean_Y = globalMomentParam.getTheta_beta0BetaRV();

    double cov_XX = globalMomentParam.getcovbaseMatrix().getEntry(0, 0) - mean_X * mean_X;
    RealMatrix cov_YY = globalMomentParam.getcovbaseMatrix().getSubMatrix(1, nOfParents, 1, nOfParents)
            .subtract(mean_Y.outerProduct(mean_Y));
    RealVector cov_XY = globalMomentParam.getcovbaseMatrix().getSubMatrix(0, 0, 1, nOfParents).getRowVector(0)
            .subtract(mean_Y.mapMultiply(mean_X));
    //RealVector cov_YX = cov_XY; //outerProduct transposes the vector automatically

    /*
     * Second step: betas and variance
     */
    RealMatrix cov_YYInverse = new LUDecompositionImpl(cov_YY).getSolver().getInverse();
    RealVector beta = cov_YYInverse.preMultiply(cov_XY);

    double beta_0 = mean_X - beta.dotProduct(mean_Y);
    double variance = cov_XX - beta.dotProduct(cov_XY);

    /*
     * Third step: natural parameters (5 in total)
     */

    /*
     * 1) theta_0
     */
    double theta_0 = beta_0 / variance;
    double[] theta_0array = { theta_0 };

    /*
     * 2) theta_0Theta
     */
    double variance2Inv = 1.0 / (2 * variance);
    RealVector theta_0Theta = beta.mapMultiply(-beta_0 / variance);
    ((CompoundVector) this.naturalParameters)
            .setXYbaseVector(new ArrayRealVector(theta_0array, theta_0Theta.getData()));

    /*
     * 3) theta_Minus1
     */
    double theta_Minus1 = -variance2Inv;

    /*
     * 4) theta_beta
     */
    RealVector theta_beta = beta.mapMultiply(variance2Inv);

    /*
     * 5) theta_betaBeta
     */
    RealMatrix theta_betaBeta = beta.outerProduct(beta).scalarMultiply(-variance2Inv * 2);

    /*
     * Store natural parameters
     */
    RealMatrix natural_XY = new Array2DRowRealMatrix(nOfParents + 1, nOfParents + 1);
    double[] theta_Minus1array = { theta_Minus1 };
    RealVector covXY = new ArrayRealVector(theta_Minus1array, theta_beta.getData());
    natural_XY.setColumnVector(0, covXY);
    natural_XY.setRowVector(0, covXY);
    natural_XY.setSubMatrix(theta_betaBeta.getData(), 1, 1);
    ((CompoundVector) this.naturalParameters).setcovbaseVector(natural_XY);

}

From source file:eu.amidst.core.exponentialfamily.EF_Normal_NormalParents.java

/**
 * {@inheritDoc}// w  w  w . j  a  v a 2 s . c o m
 */
@Override
public void updateNaturalFromMomentParameters() {

    /*
     * First step: means and convariances
     */
    CompoundVector globalMomentParam = (CompoundVector) this.momentParameters;
    double mean_X = globalMomentParam.getXYbaseMatrix().getEntry(0);
    RealVector mean_Y = globalMomentParam.getTheta_beta0BetaRV();

    double cov_XX = globalMomentParam.getcovbaseMatrix().getEntry(0, 0) - mean_X * mean_X;
    RealMatrix cov_YY = globalMomentParam.getcovbaseMatrix().getSubMatrix(1, nOfParents, 1, nOfParents)
            .subtract(mean_Y.outerProduct(mean_Y));
    RealVector cov_XY = globalMomentParam.getcovbaseMatrix().getSubMatrix(0, 0, 1, nOfParents).getRowVector(0)
            .subtract(mean_Y.mapMultiply(mean_X));
    //RealVector cov_YX = cov_XY; //outerProduct transposes the vector automatically

    /*
     * Second step: betas and variance
     */
    RealMatrix cov_YYInverse = new LUDecompositionImpl(cov_YY).getSolver().getInverse();
    RealVector beta = cov_YYInverse.preMultiply(cov_XY);

    this.betas = new double[beta.getDimension()];
    for (int i = 0; i < beta.getDimension(); i++) {
        this.betas[i] = beta.getEntry(i);
    }
    this.beta0 = mean_X - beta.dotProduct(mean_Y);
    this.variance = cov_XX - beta.dotProduct(cov_XY);

}

From source file:eu.amidst.core.exponentialfamily.EF_Normal_NormalParents2.java

/**
 * {@inheritDoc}/*from   www .  j a  v a  2  s  . c o m*/
 */
@Override
public NaturalParameters getExpectedNaturalToParent(Variable parent,
        Map<Variable, MomentParameters> momentChildCoParents) {
    NaturalParameters naturalParameters = new ArrayVector(2);
    CompoundVector globalNaturalParameters = (CompoundVector) this.naturalParameters;

    int parentID = this.getConditioningVariables().indexOf(parent);

    RealVector theta_BetaBetaPrima = globalNaturalParameters.getTheta_BetaBetaRM().getRowVector(parentID);//.copy();
    theta_BetaBetaPrima.setEntry(parentID, 0);

    double[] Yarray = new double[nOfParents];
    for (int i = 0; i < nOfParents; i++) {
        Yarray[i] = momentChildCoParents.get(this.getConditioningVariables().get(i)).get(0);
    }

    RealVector YY_i = new ArrayRealVector(Yarray);

    naturalParameters.set(0, globalNaturalParameters.getTheta_beta0Beta()[parentID]
            + 2 * globalNaturalParameters.getTheta_Beta()[parentID] * momentChildCoParents.get(var).get(0)
            + 2 * theta_BetaBetaPrima.dotProduct(YY_i));

    naturalParameters.set(1, globalNaturalParameters.getTheta_BetaBeta()[parentID][parentID]);

    return naturalParameters;
}