List of usage examples for org.apache.commons.math3.linear ArrayRealVector getSubVector
@Override public RealVector getSubVector(int index, int n) throws OutOfRangeException, NotPositiveException
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); }