Package org.apache.mahout.math

Examples of org.apache.mahout.math.DenseMatrix


        "--workingDir", workingDir.toString()
    };
    new DistributedLanczosSolver().new DistributedLanczosSolverJob().run(args);

    Path rawEigenvectors = new Path(output, DistributedLanczosSolver.RAW_EIGENVECTORS);
    Matrix eigenVectors = new DenseMatrix(7, corpus.numCols());
    Configuration conf = new Configuration();

    int i = 0;
    for (VectorWritable value : new SequenceFileValueIterable<VectorWritable>(rawEigenvectors, conf)) {
      Vector v = value.get();
      eigenVectors.assignRow(i, v);
      i++;
    }
    assertEquals("number of eigenvectors", 7, i);
  }
View Full Code Here


        "--cleansvd", "true"
    };
    new DistributedLanczosSolver().new DistributedLanczosSolverJob().run(args);
 
    Path cleanEigenvectors = new Path(output, EigenVerificationJob.CLEAN_EIGENVECTORS);
    Matrix eigenVectors = new DenseMatrix(6, corpus.numCols());
    Collection<Double> eigenvalues = Lists.newArrayList();

    output = getTestTempDirPath("output2");
    tmp = getTestTempDirPath("tmp2");
    args = new String[] {
        "-i", new Path(testData, "distMatrix").toString(),
        "-o", output.toString(),
        "--tempDir", tmp.toString(),
        "--numRows", "10",
        "--numCols", "9",
        "--rank", "7",
        "--symmetric", "false",
        "--cleansvd", "true"
    };
    new DistributedLanczosSolver().new DistributedLanczosSolverJob().run(args);
    Path cleanEigenvectors2 = new Path(output, EigenVerificationJob.CLEAN_EIGENVECTORS);
    Matrix eigenVectors2 = new DenseMatrix(7, corpus.numCols());
    Configuration conf = new Configuration();
    Collection<Double> newEigenValues = Lists.newArrayList();

    int i = 0;
    for (VectorWritable value : new SequenceFileValueIterable<VectorWritable>(cleanEigenvectors, conf)) {
      NamedVector v = (NamedVector) value.get();
      eigenVectors.assignRow(i, v);
      log.info(v.getName());
      if(EigenVector.getCosAngleError(v.getName()) < 1.0e-3) {
        eigenvalues.add(EigenVector.getEigenValue(v.getName()));
      }
      i++;
    }
    assertEquals("number of clean eigenvectors", 3, i);

    i = 0;
    for (VectorWritable value : new SequenceFileValueIterable<VectorWritable>(cleanEigenvectors2, conf)) {
      NamedVector v = (NamedVector) value.get();
      log.info(v.getName());
      eigenVectors2.assignRow(i, v);
      newEigenValues.add(EigenVector.getEigenValue(v.getName()));
      i++;
    }

    Collection<Integer> oldEigensFound = Lists.newArrayList();
    for(int row = 0; row < eigenVectors.numRows(); row++) {
      Vector oldEigen = eigenVectors.viewRow(row);
      if(oldEigen == null) {
        break;
      }
      for(int newRow = 0; newRow < eigenVectors2.numRows(); newRow++) {
        Vector newEigen = eigenVectors2.viewRow(newRow);
        if(newEigen != null) {
          if(oldEigen.dot(newEigen) > 0.9) {
            oldEigensFound.add(row);
            break;
          }
View Full Code Here

  }

  @Test
  public void testGivensQR() throws Exception {
    // DenseMatrix m = new DenseMatrix(dims<<2,dims);
    Matrix m = new DenseMatrix(3, 3);
    m.assign(new DoubleFunction() {
      private final Random rnd = RandomUtils.getRandom();
      @Override
      public double apply(double arg0) {
        return rnd.nextDouble() * SCALE;
      }
    });

    m.setQuick(0, 0, 1);
    m.setQuick(0, 1, 2);
    m.setQuick(0, 2, 3);
    m.setQuick(1, 0, 4);
    m.setQuick(1, 1, 5);
    m.setQuick(1, 2, 6);
    m.setQuick(2, 0, 7);
    m.setQuick(2, 1, 8);
    m.setQuick(2, 2, 9);

    GivensThinSolver qrSolver = new GivensThinSolver(m.rowSize(), m.columnSize());
    qrSolver.solve(m);

    Matrix qtm = new DenseMatrix(qrSolver.getThinQtTilde());

    assertOrthonormality(qtm.transpose(), false, SVD_EPSILON);

    Matrix aClone = new DenseMatrix(qrSolver.getThinQtTilde()).transpose()
        .times(qrSolver.getRTilde());

    System.out.println("aclone : " + aClone);

  }
View Full Code Here

  }


  public static void testThinQr(int dims, int kp) throws IOException {

    DenseMatrix mx = new DenseMatrix(dims << 2, dims);

    Random rnd = RandomUtils.getRandom();
    for (int i = 0; i < mx.rowSize(); i++) {
      for (int j = 0; j < mx.columnSize(); j++) {
        mx.set(i, j, rnd.nextDouble() * 1000);
      }
    }

    mx.setQuick(0, 0, 1);
    mx.setQuick(0, 1, 2);
    mx.setQuick(0, 2, 3);
    mx.setQuick(1, 0, 4);
    mx.setQuick(1, 1, 5);
    mx.setQuick(1, 2, 6);
    mx.setQuick(2, 0, 7);
    mx.setQuick(2, 1, 8);
    mx.setQuick(2, 2, 9);

    SingularValueDecomposition svd2 = new SingularValueDecomposition(mx);
    double[] svaluesControl = svd2.getSingularValues();

    for (int i = 0; i < kp; i++) {
      System.out.printf("%.3e ", svaluesControl[i]);
    }
    System.out.println();

    int m = mx.rowSize(); /* ,n=mx.columnSize(); */

    long seed = RandomUtils.getRandom().nextLong();

    final Map<Integer, Vector> btRows = Maps.newHashMap();

    PartialRowEmitter btEmitter = new PartialRowEmitter() {
      @Override
      public void emitRow(int rowNum, Vector row) {
        Vector btRow = btRows.get(rowNum);
        if (btRow != null) {
          btRow.assign(row, Functions.PLUS);
        }
        btRows.put(rowNum, btRow == null ? new DenseVector(row) : btRow);
      }
    };

    SSVDPrototype mapperSimulation = new SSVDPrototype(seed, kp, 3000);
    for (int i = 0; i < m; i++) {
      mapperSimulation.firstPass(mx.viewRow(i));
    }

    mapperSimulation.finishFirstPass();

    for (int i = 0; i < m; i++) {
      mapperSimulation.secondPass(mx.viewRow(i), btEmitter);
    }

    // LocalSSVDTest.assertOrthonormality(mapperSimulation.m_qt.transpose(),
    // false,1e-10);

View Full Code Here

  }

  public static void testBlockQrWithSSVD(int dims, int kp, int r, long rndSeed) throws IOException {

    DenseMatrix mx = new DenseMatrix(dims << 2, dims);

    Random rnd = RandomUtils.getRandom();
    for (int i = 0; i < mx.rowSize(); i++) {
      for (int j = 0; j < mx.columnSize(); j++) {
        mx.set(i, j, (rnd.nextDouble() - 0.5) * 1000);
      }
    }
    mx.setQuick(0, 0, 1);
    mx.setQuick(0, 1, 2);
    mx.setQuick(0, 2, 3);
    mx.setQuick(1, 0, 4);
    mx.setQuick(1, 1, 5);
    mx.setQuick(1, 2, 6);
    mx.setQuick(2, 0, 7);
    mx.setQuick(2, 1, 8);
    mx.setQuick(2, 2, 9);

    SingularValueDecomposition svd2 = new SingularValueDecomposition(mx);
    double[] svaluesControl = svd2.getSingularValues();

    for (int i = 0; i < kp; i++) {
      System.out.printf("%e ", svaluesControl[i]);
    }
    System.out.println();

    int m = mx.rowSize(); /* ,n=mx.columnSize(); */

    final Map<Integer, Vector> btRows = Maps.newHashMap();

    PartialRowEmitter btEmitter = new PartialRowEmitter() {
      @Override
      public void emitRow(int rowNum, Vector row) {
        Vector btRow = btRows.get(rowNum);
        if (btRow != null) {
          btRow.assign(row, Functions.PLUS);
        }
        btRows.put(rowNum, btRow == null ? new DenseVector(row) : btRow);
      }
    };

    SSVDPrototype mapperSimulation = new SSVDPrototype(rndSeed, kp, r);
    for (int i = 0; i < m; i++) {
      mapperSimulation.firstPass(mx.viewRow(i));
    }

    mapperSimulation.finishFirstPass();

    for (int i = 0; i < m; i++) {
      mapperSimulation.secondPass(mx.viewRow(i), btEmitter);
    }

    // LocalSSVDTest.assertOrthonormality(mapperSimulation.m_qt.transpose(),
    // false,1e-10);

View Full Code Here

                                    MahalanobisDistanceMeasure.class.getName(),
                                    2);

    Vector meanVector = new DenseVector(new double[] { 0.0, 0.0 });
    measure.setMeanVector(meanVector);
    Matrix m= new DenseMatrix(new double [][] {{0.5, 0.0}, {0.0, 4.0}});
    measure.setCovarianceMatrix(m);

    Path inverseCovarianceFile =
        new Path(getTestTempDirPath("mahalanobis"), "MahalanobisDistanceMeasureInverseCovarianceFile");
    conf.set("MahalanobisDistanceMeasure.inverseCovarianceFile", inverseCovarianceFile.toString());
View Full Code Here

                                    MahalanobisDistanceMeasure.class.getName(),
                                    2);

    Vector meanVector = new DenseVector(new double[]{0.0, 0.0});
    measure.setMeanVector(meanVector);
    Matrix m = new DenseMatrix(new double [][] {{0.5, 0.0}, {0.0, 4.0}});
    measure.setCovarianceMatrix(m);

    Path inverseCovarianceFile =
        new Path(getTestTempDirPath("mahalanobis"), "MahalanobisDistanceMeasureInverseCovarianceFile");
    conf.set("MahalanobisDistanceMeasure.inverseCovarianceFile", inverseCovarianceFile.toString());
View Full Code Here

        false, desiredRank, 0.5, 0.0, true);
    Path cleanEigenvectors = new Path(output,
        EigenVerificationJob.CLEAN_EIGENVECTORS);
   
    // build in-memory data matrix A
    Matrix a = new DenseMatrix(sampleData.size(), sampleDimension);
    int i = 0;
    for (VectorWritable vw : sampleData) {
      a.assignRow(i++, vw.get());
    }
    // extract the eigenvectors into P
    Matrix p = new DenseMatrix(39, desiredRank - 1);
    FileSystem fs = FileSystem.get(cleanEigenvectors.toUri(), conf);
   
    i = 0;
    for (VectorWritable value : new SequenceFileValueIterable<VectorWritable>(
        cleanEigenvectors, conf)) {
      Vector v = value.get();
      p.assignColumn(i, v);
      i++;
    }
    // sData = A P
    Matrix sData = a.times(p);
   
View Full Code Here

    }
    return m;
  }

  public static Matrix randomHierarchicalMatrix(int numRows, int numCols, boolean symmetric) {
    Matrix matrix = new DenseMatrix(numRows, numCols);
    // TODO rejigger tests so that it doesn't expect this particular seed
    Random r = new Random(1234L);
    for(int row = 0; row < numRows; row++) {
      Vector v = new DenseVector(numCols);
      for(int col = 0; col < numCols; col++) {
        double val = r.nextGaussian();
        v.set(col, val);
      }
      v.assign(Functions.MULT, 1/((row + 1) * v.norm(2)));
      matrix.assignRow(row, v);
    }
    if(symmetric) {
      return matrix.times(matrix.transpose());
    }
    return matrix;
  }
View Full Code Here

  @Test
  public void testHebbianSolver() {
    int numColumns = 800;
    Matrix corpus = randomSequentialAccessSparseMatrix(1000, 900, numColumns, 30, 1.0);
    int rank = 50;
    Matrix eigens = new DenseMatrix(rank, numColumns);
    TrainingState state = new TrainingState(eigens, null);
    long optimizedTime = timeSolver(corpus,
                                    0.00001,
                                    5,
                                    rank,
View Full Code Here

TOP

Related Classes of org.apache.mahout.math.DenseMatrix

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.