List of usage examples for org.apache.commons.math3.linear RealMatrix getRowDimension
int getRowDimension();
From source file:Rotationforest.Covariance.java
/** * Create a covariance matrix from a matrix whose columns * represent covariates./*from w w w .ja v a 2s . co m*/ * * <p>The <code>biasCorrected</code> parameter determines whether or not * covariance estimates are bias-corrected.</p> * * <p>The matrix must have at least one column and two rows</p> * * @param matrix matrix with columns representing covariates * @param biasCorrected true means covariances are bias-corrected * @throws MathIllegalArgumentException if the input matrix does not have * at least two rows and one column */ public Covariance(RealMatrix matrix, boolean biasCorrected) throws MathIllegalArgumentException { checkSufficientData(matrix); n = matrix.getRowDimension(); covarianceMatrix = computeCovarianceMatrix(matrix, biasCorrected); }
From source file:Rotationforest.Covariance.java
/** * Throws MathIllegalArgumentException if the matrix does not have at least * one column and two rows.//from w w w . j av a2 s . com * @param matrix matrix to check * @throws MathIllegalArgumentException if the matrix does not contain sufficient data * to compute covariance */ private void checkSufficientData(final RealMatrix matrix) throws MathIllegalArgumentException { int nRows = matrix.getRowDimension(); int nCols = matrix.getColumnDimension(); if (nRows < 2 || nCols < 1) { throw new MathIllegalArgumentException(LocalizedFormats.INSUFFICIENT_ROWS_AND_COLUMNS, nRows, nCols); } }
From source file:Rotationforest.rotationalgo.java
public static void main(String[] args) { // TODO code application logic here double[][] a = new double[303][7]; double[][] b = new double[303][7]; double[][] c = new double[225][7]; double[][] d = new double[225][7]; double sum[] = new double[7]; double mean[]; double[][] inputs = new double[303][14]; final RealMatrix cov; final RealMatrix cov1; read obj = new read(); ArrayList<values> ar = new ArrayList<values>(); ar = obj.run();//from w ww . ja v a2 s . c om // System.out.println("records= " + ar.size()); Iterator<values> arIterator = ar.iterator(); int i = 0; while (arIterator.hasNext()) { values values = arIterator.next(); //inputs= new double[][]{{values.age,values.sex,values.cp,values.restbps,values.chol,values.fbs,values.restecg,values.thalach,values.exang,values.oldpeak,values.slope,values.ca,values.thal,values.clas }}; inputs[i][0] = values.age; inputs[i][1] = values.sex; inputs[i][2] = values.cp; inputs[i][3] = values.restbps; inputs[i][4] = values.chol; inputs[i][5] = values.fbs; inputs[i][6] = values.restecg; inputs[i][7] = values.thalach; inputs[i][8] = values.exang; inputs[i][9] = values.oldpeak; inputs[i][10] = values.slope; inputs[i][11] = values.ca; inputs[i][12] = values.thal; inputs[i][13] = values.clas; i++; /*for (int m = 0; m <inputs.length; m++) { for (int n = 0; n <inputs[0].length; n++) { //System.out.print(inputs[m][n] + " "); } //System.out.print("\n\n\n"); } */ } /* final double [][]in =new double[303][14]; for (int r=0; r<inputs.length; r++) { for (int c=0; c<inputs[r].length; c++) { in[r][c]=inputs[r][c]; } }*/ for (int m = 0; m < inputs.length; m++) { for (int n = 0; n <= 6; n++) { a[m][n] = inputs[m][n]; } } // System.out.println(" main inputs = " + inputs); // Corresponding outputs, xor training data /* for (int m = 0; m <inputs.length; m++) { for (int n = 0; n <=6; n++) { System.out.print(a[m][n] + " "); } System.out.print("\n\n\n"); } */ int k = 7; /* for (int m = 0; m <inputs.length; m++) { for (int n = 0; n <=6 && k<=13; n++,k++) { b[m][n]=inputs[m][k]; System.out.print(inputs[m][k] + ""); } System.out.println("\n"); } */ for (int m = 0; m < inputs.length; m++) { for (int n = 0; n < 7; n++) { b[m][n] = inputs[m][k]; k++; } k = 7; } /* for (int m = 0; m <b.length; m++) { for (int n = 0; n <=6; n++) { System.out.print(b[m][n] + " "); } System.out.print("\n\n"); } */ for (int m = 0; m < 225; m++) { for (int n = 0; n <= 6; n++) { c[m][n] = a[m][n]; } } //printing c /* for (int m = 0; m <225; m++) { for (int n = 0; n <=6; n++) { System.out.print(c[m][n] + " "); } System.out.print("\n\n"); } */ for (int m = 0; m < 225; m++) { for (int n = 0; n <= 6; n++) { d[m][n] = b[m][n]; } } Mean ob = new Mean(); PCAMEAN ob1 = new PCAMEAN(); Covariance b1 = new Covariance(); double[] meanc = ob.calmean(c); double[] meand = ob.calmean(d); double[][] adc = ob1.getMeanAdjusted(c, meanc); double[][] add = ob1.getMeanAdjusted(d, meand); cov = b1.computeCovarianceMatrix(adc); cov1 = b1.computeCovarianceMatrix(add); // double[][]digi=ob1.covar(adc); int p = cov.getRowDimension(); int r = cov.getColumnDimension(); double[][] cc = new double[p][r]; double[][] cd = new double[p][r]; //print realmatrix for (int m = 0; m < p; m++) { for (int n = 0; n < r; n++) { cc[m][n] = cov.getEntry(m, n); } } for (int m = 0; m < p; m++) { for (int n = 0; n < r; n++) { cd[m][n] = cov1.getEntry(m, n); } } eigencal e = new eigencal(); double[][] evectorc = e.eigenv(cc); double[][] evectord = e.eigenv(cd); int r1 = evectord.length + evectorc.length; int r2 = evectord[0].length + evectorc[0].length; rot = new double[r1][r2]; for (int m = 0; m < r1; m++) { for (int n = 0; n < r2; n++) { rot[m][n] = 0; } } for (int m = 0; m < evectorc.length; m++) { for (int n = 0; n < evectorc[0].length; n++) { rot[m][n] = evectorc[m][n]; } for (int m1 = 7, m3 = 0; m < evectord.length; m1++, m3++) { for (int n = 7, m4 = 0; n < evectord[0].length; n++, m4++) { rot[m][n] = evectord[m3][m4]; } } } for (int m = 0; m < r1; m++) { for (int n = 0; n < r2; n++) { System.out.print(rot[m][n] + " "); } System.out.print("\n\n"); } System.out.println("Splited the data set into two arrays a & b"); System.out.println("Readed" + "\t" + c.length + "\t" + "records and 7 attributes in array a"); System.out.println("Readed" + "\t" + d.length + "\t" + "records and 7 attributes in array b"); }
From source file:stats.SpearmansCorrelation.java
/** * Applies rank transform to each of the columns of <code>matrix</code> using * the current <code>rankingAlgorithm</code>. * * @param matrix/*w w w. jav a 2s. c o m*/ * matrix to transform * @return a rank-transformed matrix */ private RealMatrix rankTransform(final RealMatrix matrix) { RealMatrix transformed = null; if (rankingAlgorithm instanceof NaturalRanking && ((NaturalRanking) rankingAlgorithm).getNanStrategy() == NaNStrategy.REMOVED) { final Set<Integer> nanPositions = new HashSet<Integer>(); for (int i = 0; i < matrix.getColumnDimension(); i++) { nanPositions.addAll(getNaNPositions(matrix.getColumn(i))); } // if we have found NaN values, we have to update the matrix size if (!nanPositions.isEmpty()) { transformed = new BlockRealMatrix(matrix.getRowDimension() - nanPositions.size(), matrix.getColumnDimension()); for (int i = 0; i < transformed.getColumnDimension(); i++) { transformed.setColumn(i, removeValues(matrix.getColumn(i), nanPositions)); } } } if (transformed == null) { transformed = matrix.copy(); } for (int i = 0; i < transformed.getColumnDimension(); i++) { transformed.setColumn(i, rankingAlgorithm.rank(transformed.getColumn(i))); } return transformed; }
From source file:syncleus.gremlann.topology.adjacency.RealMatrixAdjacency.java
public static void fill(final RealMatrix m, final double value) { if (m instanceof Array2DRowRealMatrix) { Array2DRowRealMatrix a = (Array2DRowRealMatrix) m; for (double[] n : a.getDataRef()) Arrays.fill(n, value); } else {/*from w w w .j a v a2 s. co m*/ for (int i = 0; i < m.getRowDimension(); i++) { for (int j = 0; j < m.getColumnDimension(); j++) { m.setEntry(i, j, value); } } } }
From source file:us.levk.math.linear.EucledianDistanceClusterer.java
public Cluster eucledian(final RealMatrix original) throws IOException { try (HugeRealMatrix distances = new HugeRealMatrix(original.getRowDimension(), original.getRowDimension())) { final Map<Integer, Cluster> genehash = new HashMap<Integer, Cluster>() { private static final long serialVersionUID = 1L; {/*from ww w . j a va 2s.c o m*/ for (int index = original.getRowDimension(); --index >= 0; put(index, new Cluster(index))) ; } }; TreeMap<Double, int[]> sorted = new TreeMap<>(); log.debug("Populating distance matrix"); for (int i = 0; i < original.getRowDimension(); i++) { for (int j = i + 1; j < original.getRowDimension(); j++) { // Euclidean distance calculation. double total = 0; for (int k = 0; k < original.getColumnDimension(); k++) { double left = original.getEntry(i, k); double right = original.getEntry(j, k); if (!isNaN(left) && !isNaN(right) && !isInfinite(left) && !isInfinite(right)) total += Math.pow(left - right, 2); } double distance = Math.pow(total, 0.5); distances.setEntry(i, j, distance); distances.setEntry(j, i, distance); int[] genePair = { i, j }; // Enter the distance calculated and the genes measured into a // treemap. Will be automatically sorted. sorted.put(distance, genePair); } } log.debug("Initialized distances matrix " + distances); while (true) { // Get the first key of the TreeMap. Will be the shortest distance de // facto. final double minkey = (Double) sorted.firstKey(); int[] minValues = (int[]) sorted.firstEntry().getValue(); final int value1 = minValues[0], value2 = minValues[1]; // find Cluster cluster = new Cluster(genehash.get(value1), genehash.get(value2)) { { log.debug("Generating cluster from " + value1 + " and " + value2 + " in " + genehash); contains().addAll(genehash.get(value1).contains()); contains().addAll(genehash.get(value2).contains()); d(minkey); log.debug("Generated cluster " + this); } }; genehash.put(cluster.id(), cluster); genehash.remove(value1); genehash.remove(value2); if (genehash.size() <= 1) break; // Iterate over all the current clusters to remeasure distance with the // previously clustered group. for (Cluster c : genehash.values()) { // Skip measuring the new cluster with itself. if (c == cluster) continue; double distance = 0; int n = 0; // Get genes from each cluster. Distance is measured from each element // to every element. for (int current : c.contains()) for (int created : cluster.contains()) { distance += distances.getEntry(current, created); n++; } distance = distance / n; int[] valuePair = { c.id(), cluster.id() }; sorted.put(distance, valuePair); } // Get the shortest distance. // Check to make sure shortest distance does not include a gene pair // that // has already had its elements clustered. boolean minimized = false; while (!minimized) { double mk = sorted.firstKey(); minValues = sorted.firstEntry().getValue(); // If the gene pair is not present in the current gene set, remove // this // distance. if (!genehash.containsKey(minValues[0]) || !genehash.containsKey(minValues[1])) sorted.remove(mk); else minimized = true; } } return genehash.entrySet().iterator().next().getValue(); } }