Example usage for org.apache.commons.math3.linear ArrayRealVector getSubVector

List of usage examples for org.apache.commons.math3.linear ArrayRealVector getSubVector

Introduction

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

Prototype

@Override
public RealVector getSubVector(int index, int n) throws OutOfRangeException, NotPositiveException 

Source Link

Usage

From source file:edu.utexas.cs.tactex.subscriptionspredictors.LWRCustOldAppache.java

/**
 * Compute the n-fold Cross validation error with LWR and a given Tau
 * /*from ww  w .  java2s.c  o m*/
 * @param tau
 * @param x
 * @param y
 * @return
 */
private Double CrossValidationError(Double tau, ArrayRealVector x, ArrayRealVector y) {
    int n = x.getDimension();
    double totalError = 0.0;
    for (int i = 0; i < n; ++i) {
        // CV fold for i
        double x_i = x.getEntry(i);
        double y_i = y.getEntry(i);
        ArrayRealVector Xcv = new ArrayRealVector((ArrayRealVector) x.getSubVector(0, i),
                x.getSubVector(i + 1, n - (i + 1)));
        ArrayRealVector Ycv = new ArrayRealVector((ArrayRealVector) y.getSubVector(0, i),
                y.getSubVector(i + 1, n - (i + 1)));
        Double y_predicted = LWRPredict(Xcv, Ycv, x_i, tau);
        if (null == y_predicted) {
            log.error(" cp LWR cannot predict - returning NULL");
            return null;
        }
        double predictionError = y_predicted - y_i;
        totalError += predictionError * predictionError;
    }
    return totalError;
}

From source file:edu.utexas.cs.tactex.BrokerUtilsTest.java

@Test
public void test_rotateWeeklyRecordAndAppendTillEndOfDay() {

    // this test is very similar and is based on 
    // EnergyPredictionTest.testEnergyPredictionOfAboutOneWeek()
    // we moved it here after refactoring a method to BrokersUtils
    ////  www .j  ava 2  s.  com
    // initialize an record vector where the value of an 
    // entry is its index
    ArrayRealVector record = new ArrayRealVector(7 * 24);
    for (int i = 0; i < record.getDimension(); ++i) {
        record.setEntry(i, i);
    }

    int currentTimeslot;
    ArrayRealVector expected;
    ArrayRealVector actual;

    currentTimeslot = 7 * 24 - 1;
    expected = new ArrayRealVector(record);
    actual = BrokerUtils.rotateWeeklyRecordAndAppendTillEndOfDay(record, currentTimeslot);
    assertArrayEquals("no rotation at the beginning of week", expected.toArray(), actual.toArray(), 1e-6);

    currentTimeslot = 1 * 24 - 1;
    // actual
    actual = BrokerUtils.rotateWeeklyRecordAndAppendTillEndOfDay(record, currentTimeslot);
    // prepare expected
    RealVector slice1 = record.getSubVector(1 * 24, 7 * 24 - 24);
    expected.setSubVector(0, slice1);
    expected.setSubVector(slice1.getDimension(), record.getSubVector(0, 24));
    assertArrayEquals("end of first day results in days 2,...,7,1", expected.toArray(), actual.toArray(), 1e-6);

    currentTimeslot = 6 * 24 - 1;
    // actual
    actual = BrokerUtils.rotateWeeklyRecordAndAppendTillEndOfDay(record, currentTimeslot);
    // prepare expected
    slice1 = record.getSubVector(6 * 24, 7 * 24 - 6 * 24);
    expected.setSubVector(0, slice1);
    expected.setSubVector(slice1.getDimension(), record.getSubVector(0, 6 * 24));
    assertArrayEquals("end of 6th day results in days 7,1,...,6", expected.toArray(), actual.toArray(), 1e-6);

    currentTimeslot = 0;
    // predict
    actual = BrokerUtils.rotateWeeklyRecordAndAppendTillEndOfDay(record, currentTimeslot);
    // prepare expected
    slice1 = record.getSubVector(1, 7 * 24 - 1);
    expected.setSubVector(0, slice1);
    expected.setSubVector(slice1.getDimension(), record.getSubVector(0, 1));
    expected.append(record.getSubVector(1, 24 - 1));
    assertArrayEquals("if not at day start, appending until the end of day", expected.toArray(),
            actual.toArray(), 1e-6);
}