Example usage for org.apache.commons.math3.linear MatrixUtils createRealIdentityMatrix

List of usage examples for org.apache.commons.math3.linear MatrixUtils createRealIdentityMatrix

Introduction

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

Prototype

public static RealMatrix createRealIdentityMatrix(int dimension) 

Source Link

Document

Returns dimension x dimension identity matrix.

Usage

From source file:edu.oregonstate.eecs.mcplan.ml.InformationTheoreticMetricLearner.java

/**
 * @param args//from w  w w.j a  v  a2  s  .  c  o m
 */
public static void main(final String[] args) {
    final RandomGenerator rng = new MersenneTwister(42);
    final int d = 2;
    final double u = 5.0;
    final double ell = 7.0;
    final double gamma = 1.0;
    final ArrayList<RealVector> X = new ArrayList<RealVector>();
    final RealMatrix A0 = MatrixUtils.createRealIdentityMatrix(d);

    for (final int w : new int[] { 0, 5 }) {
        for (final int h : new int[] { 0, 50 }) {
            for (int x = -1; x <= 1; ++x) {
                for (int y = -1; y <= 1; ++y) {
                    X.add(new ArrayRealVector(new double[] { x + w, y + h }));
                }
            }
        }
    }

    final ArrayList<int[]> S = new ArrayList<int[]>();
    S.add(new int[] { 4, 12 }); // Must link diagonally
    S.add(new int[] { 21, 31 });
    final ArrayList<double[]> Sd = new ArrayList<double[]>();
    for (final int[] s : S) {
        final double[] a = X.get(s[0]).subtract(X.get(s[1])).toArray();
        Sd.add(a);
    }

    final ArrayList<int[]> D = new ArrayList<int[]>();
    D.add(new int[] { 5, 23 });
    D.add(new int[] { 13, 32 }); // Cannot link vertically
    final ArrayList<double[]> Dd = new ArrayList<double[]>();
    for (final int[] dd : D) {
        final double[] a = X.get(dd[0]).subtract(X.get(dd[1])).toArray();
        Dd.add(a);
    }

    final InformationTheoreticMetricLearner itml = new InformationTheoreticMetricLearner(Sd, Dd, u, ell, A0,
            gamma, rng);
    itml.run();

    final RealMatrix A = itml.A();

    System.out.println(A0.toString());

    for (final int[] c : S) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A0.operate(diff)));
    }
    for (final int[] c : D) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A0.operate(diff)));
    }

    System.out.println(A.toString());

    for (final int[] c : S) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A.operate(diff)));
    }
    for (final int[] c : D) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A.operate(diff)));
    }

    //      int i = 0;
    //      for( final int w : new int[] { 0, 5 } ) {
    //         for( final int h : new int[] { 0, 5 } ) {
    //            for( int x = -1; x <= 1; ++x ) {
    //               for( int y = -1; y <= 1; ++y ) {
    //                  System.out.println( itml.A().operate( X.get( i++ ) ) );
    //               }
    //            }
    //         }
    //      }
}

From source file:edu.oregonstate.eecs.mcplan.ml.KulisLowRankKernelLearner.java

/**
 * @param args//w  ww . j  a  va 2 s .  c o m
 */
public static void main(final String[] args) {
    final RandomGenerator rng = new MersenneTwister(42);
    final int d = 2;
    final double u = 5.0;
    final double ell = 7.0;
    final double gamma = 1.0;
    final ArrayList<RealVector> X = new ArrayList<RealVector>();
    final RealMatrix A0 = MatrixUtils.createRealIdentityMatrix(d);

    for (final int w : new int[] { 0, 5 }) {
        for (final int h : new int[] { 0, 5 }) {
            for (int x = -1; x <= 1; ++x) {
                for (int y = -1; y <= 1; ++y) {
                    X.add(new ArrayRealVector(new double[] { x + w, y + h }));
                }
            }
        }
    }

    final ArrayList<int[]> S = new ArrayList<int[]>();
    S.add(new int[] { 4, 31 }); // Must link diagonally
    final ArrayList<int[]> D = new ArrayList<int[]>();
    D.add(new int[] { 4, 13 });
    D.add(new int[] { 22, 31 });
    D.add(new int[] { 13, 22 }); // Cannot link vertically

    final KulisLowRankKernelLearner itml = new KulisLowRankKernelLearner(X, S, D, u, ell, A0, gamma, rng);
    itml.run();

    final RealMatrix A = itml.A();

    System.out.println(A0.toString());

    for (final int[] c : S) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A0.operate(diff)));
    }
    for (final int[] c : D) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A0.operate(diff)));
    }

    System.out.println(A.toString());

    for (final int[] c : S) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A.operate(diff)));
    }
    for (final int[] c : D) {
        final RealVector diff = X.get(c[0]).subtract(X.get(c[1]));
        System.out.println(diff.dotProduct(A.operate(diff)));
    }

    //      int i = 0;
    //      for( final int w : new int[] { 0, 5 } ) {
    //         for( final int h : new int[] { 0, 5 } ) {
    //            for( int x = -1; x <= 1; ++x ) {
    //               for( int y = -1; y <= 1; ++y ) {
    //                  System.out.println( itml.A().operate( X.get( i++ ) ) );
    //               }
    //            }
    //         }
    //      }
}

From source file:edu.oregonstate.eecs.mcplan.ml.ConstrainedKMeans.java

/**
 * @param args/*w  ww  .j a  v  a 2  s .c  o  m*/
 */
public static void main(final String[] args) {
    final RandomGenerator rng = new MersenneTwister(42);
    final int K = 2;
    final int d = 2;
    final ArrayList<RealVector> X = new ArrayList<RealVector>();
    final double u = 2.0;
    final double ell = 8.0;
    final double gamma = 10.0;

    for (final int s : new int[] { 0, 5, 10 }) {
        for (int x = -1; x <= 1; ++x) {
            for (int y = -1; y <= 1; ++y) {
                X.add(new ArrayRealVector(new double[] { x + s, y }));
            }
        }
    }

    final TIntObjectMap<Pair<int[], double[]>> M = new TIntObjectHashMap<Pair<int[], double[]>>();
    M.put(16, Pair.makePair(new int[] { 20 }, new double[] { 1.0 }));
    M.put(0, Pair.makePair(new int[] { 8 }, new double[] { 1.0 }));

    final TIntObjectMap<Pair<int[], double[]>> C = new TIntObjectHashMap<Pair<int[], double[]>>();
    C.put(13, Pair.makePair(new int[] { 20 }, new double[] { 1.0 }));
    C.put(10, Pair.makePair(new int[] { 16 }, new double[] { 1.0 }));

    final ArrayList<double[]> S = new ArrayList<double[]>();
    M.forEachKey(new TIntProcedure() {
        @Override
        public boolean execute(final int i) {
            final Pair<int[], double[]> p = M.get(i);
            if (p != null) {
                for (final int j : p.first) {
                    S.add(new double[] { i, j });
                }
            }
            return true;
        }
    });

    final ArrayList<double[]> D = new ArrayList<double[]>();
    C.forEachKey(new TIntProcedure() {
        @Override
        public boolean execute(final int i) {
            final Pair<int[], double[]> p = C.get(i);
            if (p != null) {
                for (final int j : p.first) {
                    D.add(new double[] { i, j });
                }
            }
            return true;
        }
    });

    final ConstrainedKMeans kmeans = new ConstrainedKMeans(K, d, X, M, C, rng) {
        RealMatrix A_ = MatrixUtils.createRealIdentityMatrix(d);
        double Dmax_ = 1.0;

        @Override
        public double distance(final RealVector x1, final RealVector x2) {
            final RealVector diff = x1.subtract(x2);
            return Math.sqrt(HilbertSpace.inner_prod(diff, A_, diff));
        }

        @Override
        public double distanceMax() {
            return Dmax_;
        }

        @Override
        protected void initializeDistanceFunction() {
            double max_distance = 0.0;
            for (int i = 0; i < X.size(); ++i) {
                for (int j = i + 1; j < X.size(); ++j) {
                    final double d = distance(X.get(i), X.get(j));
                    if (d > max_distance) {
                        max_distance = d;
                    }
                }
            }
            Dmax_ = max_distance;
        }

        @Override
        protected boolean updateDistanceFunction() {
            final InformationTheoreticMetricLearner itml = new InformationTheoreticMetricLearner(S, D, u, ell,
                    A_, gamma, rng_);
            itml.run();
            final double delta = A_.subtract(itml.A()).getFrobeniusNorm();
            A_ = itml.A();
            initializeDistanceFunction();
            return delta > convergence_tolerance_;
        }
    };

    kmeans.run();
    for (int i = 0; i < kmeans.mu().length; ++i) {
        System.out.println("Mu " + i + ": " + kmeans.mu()[i]);
        for (int j = 0; j < kmeans.assignments().length; ++j) {
            if (kmeans.assignments()[j] == i) {
                System.out.println("\tPoint " + X.get(j));
            }
        }
    }

}

From source file:com.github.thorbenlindhauer.math.MathUtil.java

public RealMatrix invert() {
    if (!matrix.isSquare()) {
        throw new FactorOperationException("Cannot invert non-square matrix");
    }//from ww  w .j a v  a2 s. c om
    ensureLUDecompositionInitialized();

    int matrixDimension = matrix.getRowDimension();

    RealMatrix inverseMatrix = new Array2DRowRealMatrix(matrixDimension, matrixDimension);
    RealMatrix identityMatrix = MatrixUtils.createRealIdentityMatrix(matrixDimension);

    DecompositionSolver solver = luDecomposition.getSolver();

    for (int i = 0; i < matrixDimension; i++) {
        RealVector identityColumn = identityMatrix.getColumnVector(i);
        RealVector inverseColumn = solver.solve(identityColumn);

        inverseMatrix.setColumnVector(i, inverseColumn);
    }

    return inverseMatrix;

}

From source file:edu.cudenver.bios.power.test.paper.TestLawANOVA.java

/**
 * Reproduce the list of power displayed in the figure associated
 * with the Law ANCOVA example in the GLIMMPSE manuscript
 *///ww  w.  j  a  va  2  s.  co  m
public void testANOVA() {
    try {
        // build the inputs
        GLMMPowerParameters params = new GLMMPowerParameters();

        // add alpha values
        params.addAlpha(0.01);

        // build the design matrix - reference cell coded
        params.setDesignEssence(MatrixUtils.createRealIdentityMatrix(4));

        // add desired power
        params.addPower(0.9);

        // build beta matrix
        double[][] beta = { { 5 }, { 0 }, { 0 }, { 0 } };
        params.setBeta(new FixedRandomMatrix(beta, null, false));
        // add beta scale values
        params.addBetaScale(1);

        // build between subject contrast
        double[][] between = { { 1, -1, 0, 0 }, { 1, 0, -1, 0 }, { 1, 0, 0, -1 } };
        params.setBetweenSubjectContrast(new FixedRandomMatrix(between, null, true));

        // build within subject contrast
        double[][] within = { { 1 } };
        params.setWithinSubjectContrast(new Array2DRowRealMatrix(within));

        // build theta null matrix
        double[][] theta0 = { { 0 }, { 0 }, { 0 } };
        params.setTheta(new Array2DRowRealMatrix(theta0));

        // build covariance of E (SD in manuscript = 8.1 => variance = 65.61
        double[][] sigmaE = { { 65.61 } };
        params.setSigmaError(new Array2DRowRealMatrix(sigmaE));
        // add sigma scale factors
        params.addSigmaScale(1);
        params.addSigmaScale(0.5);
        params.addSigmaScale(2);

        // add tests
        params.addTest(Test.UNIREP);

        // get the power results
        GLMMPowerCalculator calc = new GLMMPowerCalculator();
        List<Power> results = calc.getSampleSize(params);

        // output the sample size results
        writeResults(results);
        assertTrue(true);
    } catch (Exception e) {
        System.err.print(e.getMessage());
        fail();
    }
}

From source file:io.github.malapert.jwcs.coordsystem.Galactic.java

@Override
protected RealMatrix getRotationMatrix(final SkySystem refFrame) {
    RealMatrix m;//from  w w w  .j a  v a 2s .c o m
    if (refFrame instanceof Equatorial) {
        RealMatrix m1 = Utility.MatrixEqB19502Gal().transpose();
        RealMatrix m2 = Utility.MatrixEpoch12Epoch2(1950.0f, refFrame.getEquinox(),
                ReferenceSystemInterface.Type.FK4, ((Equatorial) refFrame).getReferenceSystemType(), null);
        m = m2.multiply(m1);
    } else if (refFrame instanceof Galactic) {
        m = MatrixUtils.createRealIdentityMatrix(3);
    } else if (refFrame instanceof SuperGalactic) {
        m = Utility.MatrixGal2Sgal();
    } else if (refFrame instanceof Ecliptic) {
        RealMatrix m1 = Utility.MatrixEqB19502Gal().transpose();
        RealMatrix m2 = Utility.MatrixEpoch12Epoch2(1950.0f, refFrame.getEquinox(),
                ReferenceSystemInterface.Type.FK4, ReferenceSystemInterface.Type.FK5, null);
        RealMatrix m3 = Utility.MatrixEq2Ecl(refFrame.getEquinox(), ReferenceSystemInterface.Type.FK5);
        m = m3.multiply(m2).multiply(m1);
    } else {
        throw new JWcsError(String.format("Unknown output sky system: %s", refFrame.getSkySystemName()));
    }
    return m;
}

From source file:com.caseystella.analytics.outlier.batch.rpca.RidgeRegression.java

public void updateCoefficients(double l2penalty) {
    if (this.X_svd == null) {
        this.X_svd = new SingularValueDecomposition(X);
    }/*w  ww . j a va2s .c om*/
    RealMatrix V = this.X_svd.getV();
    double[] s = this.X_svd.getSingularValues();
    RealMatrix U = this.X_svd.getU();

    for (int i = 0; i < s.length; i++) {
        s[i] = s[i] / (s[i] * s[i] + l2penalty);
    }
    RealMatrix S = MatrixUtils.createRealDiagonalMatrix(s);

    RealMatrix Z = V.multiply(S).multiply(U.transpose());

    this.coefficients = Z.operate(this.Y);

    this.fitted = this.X.operate(this.coefficients);
    double errorVariance = 0;
    for (int i = 0; i < residuals.length; i++) {
        this.residuals[i] = this.Y[i] - this.fitted[i];
        errorVariance += this.residuals[i] * this.residuals[i];
    }
    errorVariance = errorVariance / (X.getRowDimension() - X.getColumnDimension());

    RealMatrix errorVarianceMatrix = MatrixUtils.createRealIdentityMatrix(this.Y.length)
            .scalarMultiply(errorVariance);
    RealMatrix coefficientsCovarianceMatrix = Z.multiply(errorVarianceMatrix).multiply(Z.transpose());
    this.standarderrors = getDiagonal(coefficientsCovarianceMatrix);
}

From source file:com.datumbox.framework.core.machinelearning.clustering.GaussianDPMMTest.java

/**
 * Test of predict method, of class GaussianDPMM.
 *///from w  w  w.jav a 2 s . c  om
@Test
public void testPredict() {
    logger.info("testPredict");

    Configuration configuration = getConfiguration();

    Dataframe[] data = Datasets.gaussianClusters(configuration);

    Dataframe trainingData = data[0];
    Dataframe validationData = data[1];

    String storageName = this.getClass().getSimpleName();

    GaussianDPMM.TrainingParameters param = new GaussianDPMM.TrainingParameters();
    param.setAlpha(0.01);
    param.setMaxIterations(100);
    param.setInitializationMethod(GaussianDPMM.TrainingParameters.Initialization.ONE_CLUSTER_PER_RECORD);
    param.setKappa0(0);
    param.setNu0(1);
    param.setMu0(new OpenMapRealVector(2));
    param.setPsi0(MatrixUtils.createRealIdentityMatrix(2));

    GaussianDPMM instance = MLBuilder.create(param, configuration);
    instance.fit(trainingData);
    instance.save(storageName);

    trainingData.close();
    instance.close();

    instance = MLBuilder.load(GaussianDPMM.class, storageName, configuration);

    instance.predict(validationData);
    ClusteringMetrics vm = new ClusteringMetrics(validationData);

    double expResult = 1.0;
    double result = vm.getPurity();
    assertEquals(expResult, result, Constants.DOUBLE_ACCURACY_HIGH);

    instance.delete();

    validationData.close();
}

From source file:fi.smaa.jsmaa.model.MultivariateGaussianCriterionMeasurement.java

public MultivariateGaussianCriterionMeasurement(List<Alternative> alternatives) {
    this.alternatives = new ArrayList<Alternative>(alternatives);
    this.meanVector = new ArrayRealVector(alternatives.size(), 0.0);
    this.covarianceMatrix = MatrixUtils.createRealIdentityMatrix(alternatives.size());
}

From source file:com.joptimizer.algebra.CholeskyRCFactorizationTest.java

public void testInvert1() throws Exception {
    log.debug("testInvert1");
    double[][] QData = new double[][] { { 1, .12, .13, .14, .15 }, { .12, 2, .23, .24, .25 },
            { .13, .23, 3, 0, 0 }, { .14, .24, 0, 4, 0 }, { .15, .25, 0, 0, 5 } };
    RealMatrix Q = MatrixUtils.createRealMatrix(QData);

    CholeskyRCFactorization myc = new CholeskyRCFactorization(DoubleFactory2D.dense.make(QData));
    myc.factorize();//w w  w  .  jav a2 s  .co m
    RealMatrix L = new Array2DRowRealMatrix(myc.getL().toArray());
    RealMatrix LT = new Array2DRowRealMatrix(myc.getLT().toArray());
    log.debug("L: " + ArrayUtils.toString(L.getData()));
    log.debug("LT: " + ArrayUtils.toString(LT.getData()));
    log.debug("L.LT: " + ArrayUtils.toString(L.multiply(LT).getData()));
    log.debug("LT.L: " + ArrayUtils.toString(LT.multiply(L).getData()));

    // check Q = L.LT
    double norm = L.multiply(LT).subtract(Q).getNorm();
    log.debug("norm: " + norm);
    assertTrue(norm < 1.E-15);

    RealMatrix LInv = new SingularValueDecomposition(L).getSolver().getInverse();
    log.debug("LInv: " + ArrayUtils.toString(LInv.getData()));
    RealMatrix LInvT = LInv.transpose();
    log.debug("LInvT: " + ArrayUtils.toString(LInvT.getData()));
    RealMatrix LTInv = new SingularValueDecomposition(LT).getSolver().getInverse();
    log.debug("LTInv: " + ArrayUtils.toString(LTInv.getData()));
    RealMatrix LTInvT = LTInv.transpose();
    log.debug("LTInvT: " + ArrayUtils.toString(LTInvT.getData()));
    log.debug("LInv.LInvT: " + ArrayUtils.toString(LInv.multiply(LInvT).getData()));
    log.debug("LTInv.LTInvT: " + ArrayUtils.toString(LTInv.multiply(LTInvT).getData()));

    RealMatrix Id = MatrixUtils.createRealIdentityMatrix(Q.getRowDimension());
    //check Q.(LTInv * LInv) = 1
    norm = Q.multiply(LTInv.multiply(LInv)).subtract(Id).getNorm();
    log.debug("norm: " + norm);
    assertTrue(norm < 5.E-15);

    // check Q.QInv = 1
    RealMatrix QInv = MatrixUtils.createRealMatrix(myc.getInverse().toArray());
    norm = Q.multiply(QInv).subtract(Id).getNorm();
    log.debug("norm: " + norm);
    assertTrue(norm < 1.E-15);
}