List of usage examples for org.apache.commons.math3.linear MatrixUtils createRealIdentityMatrix
public static RealMatrix createRealIdentityMatrix(int dimension)
dimension x dimension identity matrix. 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); }