List of usage examples for org.apache.commons.math3.linear RealMatrix getRowDimension
int getRowDimension();
From source file:org.eclipse.january.dataset.LinearAlgebra.java
private static Dataset createDataset(RealMatrix m) { DoubleDataset r = DatasetFactory.zeros(DoubleDataset.class, m.getRowDimension(), m.getColumnDimension()); if (m instanceof Array2DRowRealMatrix) { double[][] data = ((Array2DRowRealMatrix) m).getDataRef(); IndexIterator it = r.getIterator(true); int[] pos = it.getPos(); while (it.hasNext()) { r.setAbs(it.index, data[pos[0]][pos[1]]); }//from w w w.j a v a 2 s . c o m } else { IndexIterator it = r.getIterator(true); int[] pos = it.getPos(); while (it.hasNext()) { r.setAbs(it.index, m.getEntry(pos[0], pos[1])); } } return r; }
From source file:org.grouplens.samantha.modeler.solver.RandomInitializer.java
public void randInitMatrix(RealMatrix mat, boolean normalize) { int len = mat.getRowDimension(); RealVector vec = MatrixUtils.createRealVector(new double[mat.getColumnDimension()]); for (int i = 0; i < len; i++) { randInitVector(vec, normalize);//from ww w.ja v a 2 s . c o m mat.setRowVector(i, vec); } }
From source file:org.interpss.opf.dc.impl.EqIneqMatrixBuilder.java
public Array2DRowRealMatrix formG() { RealMatrix U_matrix = formU(); ;//from w ww .jav a 2s .c o m RealMatrix Wrr_matrix = formReducedADWMatrix(); int gcnt = U_matrix.getRowDimension() + Wrr_matrix.getRowDimension(); Array2DRowRealMatrix G = new Array2DRowRealMatrix(gcnt, gcnt); G.setSubMatrix(U_matrix.getData(), 0, 0); G.setSubMatrix(Wrr_matrix.getData(), U_matrix.getRowDimension(), U_matrix.getColumnDimension()); return G; }
From source file:org.knime.al.util.noveltydetection.knfst.KNFST.java
public static RealMatrix projection(final RealMatrix kernelMatrix, final String[] labels) throws KNFSTException { final ClassWrapper[] classes = ClassWrapper.classes(labels); // check labels if (classes.length == 1) { throw new IllegalArgumentException( "not able to calculate a nullspace from data of a single class using KNFST (input variable \"labels\" only contains a single value)"); }/* ww w . ja v a 2 s. c o m*/ // check kernel matrix if (!kernelMatrix.isSquare()) { throw new IllegalArgumentException("The KernelMatrix must be quadratic!"); } // calculate weights of orthonormal basis in kernel space final RealMatrix centeredK = centerKernelMatrix(kernelMatrix); final EigenDecomposition eig = new EigenDecomposition(centeredK); final double[] eigVals = eig.getRealEigenvalues(); final ArrayList<Integer> nonZeroEigValIndices = new ArrayList<Integer>(); for (int i = 0; i < eigVals.length; i++) { if (eigVals[i] > 1e-12) { nonZeroEigValIndices.add(i); } } int eigIterator = 0; final RealMatrix eigVecs = eig.getV(); RealMatrix basisvecs = null; try { basisvecs = MatrixUtils.createRealMatrix(eigVecs.getRowDimension(), nonZeroEigValIndices.size()); } catch (final Exception e) { throw new KNFSTException("Something went wrong. Try different parameters or a different kernel."); } for (final Integer index : nonZeroEigValIndices) { final double normalizer = 1 / Math.sqrt(eigVals[index]); final RealVector basisVec = eigVecs.getColumnVector(eigIterator).mapMultiply(normalizer); basisvecs.setColumnVector(eigIterator++, basisVec); } // calculate transformation T of within class scatter Sw: // T= B'*K*(I-L) and L a block matrix final RealMatrix L = kernelMatrix.createMatrix(kernelMatrix.getRowDimension(), kernelMatrix.getColumnDimension()); int start = 0; for (final ClassWrapper cl : classes) { final int count = cl.getCount(); L.setSubMatrix(MatrixFunctions.ones(count, count).scalarMultiply(1.0 / count).getData(), start, start); start += count; } // need Matrix M with all entries 1/m to modify basisvecs which allows // usage of // uncentered kernel values (eye(size(M)).M)*basisvecs final RealMatrix M = MatrixFunctions .ones(kernelMatrix.getColumnDimension(), kernelMatrix.getColumnDimension()) .scalarMultiply(1.0 / kernelMatrix.getColumnDimension()); final RealMatrix I = MatrixUtils.createRealIdentityMatrix(M.getColumnDimension()); // compute helper matrix H final RealMatrix H = ((I.subtract(M)).multiply(basisvecs)).transpose().multiply(kernelMatrix) .multiply(I.subtract(L)); // T = H*H' = B'*Sw*B with B=basisvecs final RealMatrix T = H.multiply(H.transpose()); // calculate weights for null space RealMatrix eigenvecs = MatrixFunctions.nullspace(T); if (eigenvecs == null) { final EigenDecomposition eigenComp = new EigenDecomposition(T); final double[] eigenvals = eigenComp.getRealEigenvalues(); eigenvecs = eigenComp.getV(); final int minId = MatrixFunctions.argmin(MatrixFunctions.abs(eigenvals)); final double[] eigenvecsData = eigenvecs.getColumn(minId); eigenvecs = MatrixUtils.createColumnRealMatrix(eigenvecsData); } // System.out.println("eigenvecs:"); // test.printMatrix(eigenvecs); // calculate null space projection final RealMatrix proj = ((I.subtract(M)).multiply(basisvecs)).multiply(eigenvecs); return proj; }
From source file:org.knime.al.util.noveltydetection.knfst.KNFST.java
private static RealMatrix centerKernelMatrix(final RealMatrix kernelMatrix) { // get size of kernelMatrix final int n = kernelMatrix.getRowDimension(); // get mean values for each row/column final RealVector columnMeans = MatrixFunctions.columnMeans(kernelMatrix); final double matrixMean = MatrixFunctions.mean(kernelMatrix); RealMatrix centeredKernelMatrix = kernelMatrix.copy(); for (int k = 0; k < n; k++) { centeredKernelMatrix.setRowVector(k, centeredKernelMatrix.getRowVector(k).subtract(columnMeans)); centeredKernelMatrix.setColumnVector(k, centeredKernelMatrix.getColumnVector(k).subtract(columnMeans)); }/* w w w .j a v a 2s . c o m*/ centeredKernelMatrix = centeredKernelMatrix.scalarAdd(matrixMean); return centeredKernelMatrix; }
From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java
public static RealMatrix nullspace(final RealMatrix matrix) { final SingularValueDecomposition svd = new SingularValueDecomposition(matrix); final int rank = svd.getRank(); final RealMatrix V = svd.getV(); RealMatrix nullspace = null;/*from w w w . j a v a 2 s . co m*/ if (rank < matrix.getColumnDimension()) { nullspace = V.getSubMatrix(0, V.getRowDimension() - 1, rank, V.getColumnDimension() - 1); } return nullspace; }
From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java
public static RealVector rowMins(final RealMatrix matrix) { final RealVector rowMins = MatrixUtils.createRealVector(new double[matrix.getRowDimension()]); for (int r = 0; r < matrix.getRowDimension(); r++) { rowMins.setEntry(r, matrix.getRowVector(r).getMinValue()); }/*from w ww . jav a2 s .co m*/ return rowMins; }
From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java
public static RealMatrix sqrt(final RealMatrix matrix) { final double[][] data = matrix.getData(); for (int r = 0; r < matrix.getRowDimension(); r++) { for (int c = 0; c < matrix.getColumnDimension(); c++) { data[r][c] = Math.sqrt(data[r][c]); }/*from w w w. ja va2s . c om*/ } return MatrixUtils.createRealMatrix(data); }
From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java
public static RealMatrix multiplyElementWise(final RealMatrix matrix1, final RealMatrix matrix2) { if (matrix1.getRowDimension() != matrix2.getRowDimension() || matrix1.getColumnDimension() != matrix2.getColumnDimension()) { throw new IllegalArgumentException("The matrices must be of the same dimensions!"); }//from w w w .j ava 2s. c om final RealMatrix result = matrix1.createMatrix(matrix1.getRowDimension(), matrix1.getColumnDimension()); for (int r = 0; r < matrix1.getRowDimension(); r++) { for (int c = 0; c < matrix1.getColumnDimension(); c++) { result.setEntry(r, c, matrix1.getEntry(r, c) * matrix2.getEntry(r, c)); } } return result; }
From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java
public static RealVector rowSums(final RealMatrix matrix) { final RealVector rowSums = MatrixUtils.createRealVector(new double[matrix.getRowDimension()]); for (int r = 0; r < matrix.getRowDimension(); r++) { final double[] row = matrix.getRow(r); for (final double cell : row) { rowSums.addToEntry(r, cell); }/*from w ww. j a v a 2 s . c om*/ } return rowSums; }