Example usage for org.apache.commons.math3.linear RealVector getDimension

List of usage examples for org.apache.commons.math3.linear RealVector getDimension

Introduction

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

Prototype

public abstract int getDimension();

Source Link

Document

Returns the size of the vector.

Usage

From source file:org.lambda3.indra.core.impl.DiceClient.java

@Override
protected double sim(RealVector r1, RealVector r2, boolean sparse) {
    if (r1.getDimension() != r2.getDimension()) {
        return 0;
    }/*from   ww  w.ja va2s  . co  m*/

    double min = 0.0;
    double sum = 0.0;

    for (int i = 0; i < r1.getDimension(); ++i) {
        if (r1.getEntry(i) > r2.getEntry(i)) {
            min += r2.getEntry(i);
        } else {
            min += r1.getEntry(i);
        }
        sum += r1.getEntry(i) + r2.getEntry(i);
    }

    if (sum == 0) {
        return 0;
    }

    double result = 2 * min / sum;
    return Math.abs(result);
}

From source file:org.lambda3.indra.core.impl.Jaccard2Client.java

@Override
protected double sim(RealVector r1, RealVector r2, boolean sparse) {
    if (r1.getDimension() != r2.getDimension()) {
        return 0;
    }/*from ww  w.j  a v  a2s . com*/

    double min = 0.0;
    double max = 0.0;

    for (int i = 0; i < r1.getDimension(); ++i) {
        if (r1.getEntry(i) > r2.getEntry(i)) {
            min += r2.getEntry(i);
            max += r1.getEntry(i);
        } else {
            min += r1.getEntry(i);
            max += r2.getEntry(i);
        }
    }

    if (max == 0) {
        return 0;
    }

    return Math.abs(min / max);
}

From source file:org.lambda3.indra.core.impl.JensenShannonClient.java

@Override
protected double sim(RealVector r1, RealVector r2, boolean sparse) {
    if (r1.getDimension() != r2.getDimension()) {
        return 0;
    }/*from   www.  j  ava2s  .  c om*/

    double divergence = 0.0;
    double avr = 0.0;

    for (int i = 0; i < r1.getDimension(); ++i) {
        avr = (r1.getEntry(i) + r2.getEntry(i)) / 2;

        if (r1.getEntry(i) > 0.0 && avr > 0.0) {
            divergence += r1.getEntry(i) * Math.log(r1.getEntry(i) / avr);
        }
    }
    for (int i = 0; i < r2.getDimension(); ++i) {
        avr = (r1.getEntry(i) + r2.getEntry(i)) / 2;

        if (r2.getEntry(i) > 0.0 && avr > 0.0) {
            divergence += r1.getEntry(i) * Math.log(r2.getEntry(i) / avr);
        }
    }

    double result = 1 - (divergence / (2 * Math.sqrt(2 * Math.log(2))));
    return Math.abs(result);
}

From source file:org.lenskit.mf.funksvd.FunkSVDItemScorer.java

@Override
protected double computeScore(double bias, @Nonnull RealVector user, @Nonnull RealVector item) {
    if (domain == null) {
        return super.computeScore(bias, user, item);
    } else {/*  w w  w  . j a va  2  s.c om*/
        double result = bias;
        int n = user.getDimension();
        for (int i = 0; i < n; i++) {
            result = domain.clampValue(result + user.getEntry(i) * item.getEntry(i));
        }
        return result;
    }
}

From source file:org.lenskit.mf.funksvd.FunkSVDModelBuilder.java

/**
 * Add a feature's summary to the feature info builder.
 *
 * @param ufv The user values./*from w ww. j a v  a 2s . com*/
 * @param ifv The item values.
 * @param fib  The feature info builder.
 */
protected void summarizeFeature(RealVector ufv, RealVector ifv, FeatureInfo.Builder fib) {
    fib.setUserAverage(realVectorSum(ufv) / ufv.getDimension())
            .setItemAverage(realVectorSum(ifv) / ifv.getDimension())
            .setSingularValue(ufv.getNorm() * ifv.getNorm());
}

From source file:org.lenskit.mf.svd.DomainClampingKernel.java

@Override
public double apply(double bias, @Nonnull RealVector user, @Nonnull RealVector item) {
    final int n = user.getDimension();
    Preconditions.checkArgument(item.getDimension() == n, "vectors have different lengths");

    double result = bias;
    for (int i = 0; i < n; i++) {
        result = domain.clampValue(result + user.getEntry(i) * item.getEntry(i));
    }//from   ww w .  j a  v a 2  s .  c o m
    return result;
}

From source file:org.lenskit.pf.HPFModelProvider.java

public void logNormalize(RealVector phi) {
    final int size = phi.getDimension();
    if (size == 1) {
        phi.setEntry(0, 1.0);//from   ww  w.ja v a  2 s . com
    }

    if (size > 1) {
        double logsum = phi.getEntry(0);
        for (int i = 1; i < size; i++) {
            double phiK = phi.getEntry(i);
            if (phiK < logsum) {
                logsum = logsum + Math.log(1 + Math.exp(phiK - logsum));
            } else {
                logsum = phiK + Math.log(1 + Math.exp(logsum - phiK));
            }
        }

        for (int k = 0; k < size; k++) {
            double phiK = phi.getEntry(k);
            double normalized = Math.exp(phiK - logsum);
            phi.setEntry(k, normalized);
        }
    }

}

From source file:org.lenskit.pf.PMFModel.java

private static void logNormalize(RealVector phi) {
    final int size = phi.getDimension();
    if (size == 1) {
        phi.setEntry(0, 1.0);/*from   w ww . j a v  a2 s  . co  m*/
    }

    if (size > 1) {
        double logsum = phi.getEntry(0);
        for (int k = 1; k < size; k++) {
            double phiK = phi.getEntry(k);
            if (phiK < logsum) {
                logsum = logsum + Math.log(1 + Math.exp(phiK - logsum));
            } else {
                logsum = phiK + Math.log(1 + Math.exp(logsum - phiK));
            }
        }

        for (int k = 0; k < size; k++) {
            double phiK = phi.getEntry(k);
            double normalized = Math.exp(phiK - logsum);
            phi.setEntry(k, normalized);
        }
    }

}

From source file:org.lenskit.predict.ordrec.OrdRecRatingPredictor.java

/**
 * The train function of OrdRec. Get all parameters after learning process.
 *//*from   w  ww. ja  va  2  s .c o  m*/
@SuppressWarnings("ConstantConditions")
private void trainModel(OrdRecModel model, SparseVector ratings, MutableSparseVector scores) {
    RealVector beta = model.getBeta();
    RealVector deltaBeta = new ArrayRealVector(beta.getDimension());
    double dt1;
    // n is the number of iteration;
    for (int j = 0; j < iterationCount; j++) {
        for (VectorEntry rating : ratings) {
            long iid = rating.getKey();
            double score = scores.get(iid);
            int r = quantizer.index(rating.getValue());

            double probEqualR = model.getProbEQ(score, r);
            double probLessR = model.getProbLE(score, r);
            double probLessR_1 = model.getProbLE(score, r - 1);

            double t1 = model.getT1();
            dt1 = learningRate / probEqualR * (probLessR * (1 - probLessR) * dBeta(r, 0, t1)
                    - probLessR_1 * (1 - probLessR_1) * dBeta(r - 1, 0, t1) - regTerm * t1);

            double dbetaK;
            for (int k = 0; k < beta.getDimension(); k++) {
                dbetaK = learningRate / probEqualR
                        * (probLessR * (1 - probLessR) * dBeta(r, k + 1, beta.getEntry(k))
                                - probLessR_1 * (1 - probLessR_1) * dBeta(r - 1, k + 1, beta.getEntry(k))
                                - regTerm * beta.getEntry(k));
                deltaBeta.setEntry(k, dbetaK);
            }
            model.update(dt1, deltaBeta);
        }
    }
}

From source file:org.lenskit.transform.quantize.PreferenceDomainQuantizerTest.java

@Test
public void testMakeValues() {
    RealVector vals = PreferenceDomainQuantizer.makeValues(domain);
    RealVector evals = new ArrayRealVector(new double[] { 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0 });
    assertThat(vals.getDimension(), equalTo(evals.getDimension()));
    for (int i = 0; i < vals.getDimension(); i++) {
        assertThat("element " + i, vals.getEntry(i), closeTo(evals.getEntry(i), 1.0e-6));
    }/*from  w  ww  .jav a 2  s . c  o m*/
}