Example usage for org.apache.commons.math3.linear RealVector getDimension

List of usage examples for org.apache.commons.math3.linear RealVector getDimension

Introduction

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

Prototype

public abstract int getDimension();

Source Link

Document

Returns the size of the vector.

Usage

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

public static void main(final String[] args) throws FileNotFoundException {
    final File root = new File("test/KernelPrincipalComponentsAnalysis");
    root.mkdirs();//ww w  . j  a v a2  s . c  o  m
    final int seed = 42;
    final int N = 30;
    final RandomGenerator rng = new MersenneTwister(seed);
    final ArrayList<RealVector> data = new ArrayList<RealVector>();
    final ArrayList<RealVector> shuffled = new ArrayList<RealVector>();

    //      final double[][] covariance = new double[][] { {1.0, 0.0},
    //                                          {0.0, 1.0} };
    //      final MultivariateNormalDistribution p = new MultivariateNormalDistribution(
    //         rng, new double[] { 0.0, 0.0 }, covariance );
    //      final MultivariateNormalDistribution q = new MultivariateNormalDistribution(
    //         rng, new double[] { 10.0, 0.0 }, covariance );
    //
    //      for( int i = 0; i < N; ++i ) {
    //         data.add( new ArrayRealVector( p.sample() ) );
    //         data.add( new ArrayRealVector( q.sample() ) );
    //      }
    //      Fn.shuffle( rng, data );

    final double sigma = 0.01;
    final double[][] covariance = new double[][] { { sigma, 0.0 }, { 0.0, sigma } };
    final MultivariateNormalDistribution p = new MultivariateNormalDistribution(rng, new double[] { 0.0, 0.0 },
            covariance);

    for (final double r : new double[] { 1.0, 3.0, 5.0 }) {
        for (int i = 0; i < N; ++i) {
            final double theta = i * 2 * Math.PI / N;
            final double[] noise = p.sample();
            final RealVector v = new ArrayRealVector(
                    new double[] { r * Math.cos(theta) + noise[0], r * Math.sin(theta) + noise[1] });
            data.add(v);
            shuffled.add(v);
        }
    }
    Fn.shuffle(rng, shuffled);

    final Csv.Writer data_writer = new Csv.Writer(new PrintStream(new File(root, "data.csv")));
    for (final RealVector v : data) {
        for (int i = 0; i < v.getDimension(); ++i) {
            data_writer.cell(v.getEntry(i));
        }
        data_writer.newline();
    }
    data_writer.close();

    System.out.println("[Training]");
    final int Ncomponents = 2;
    final KernelPrincipalComponentsAnalysis<RealVector> kpca = new KernelPrincipalComponentsAnalysis<RealVector>(
            shuffled, new RadialBasisFunctionKernel(0.5), 1e-6);
    System.out.println("[Finished]");
    for (int i = 0; i < Ncomponents; ++i) {
        System.out.println(kpca.eigenvectors.get(i));
    }

    System.out.println("Transformed data:");
    final KernelPrincipalComponentsAnalysis.Transformer<RealVector> transformer = kpca
            .makeTransformer(Ncomponents);
    final Csv.Writer transformed_writer = new Csv.Writer(new PrintStream(new File(root, "transformed.csv")));
    for (final RealVector u : data) {
        final RealVector v = transformer.transform(u);
        System.out.println(v);
        for (int i = 0; i < v.getDimension(); ++i) {
            transformed_writer.cell(v.getEntry(i));
        }
        transformed_writer.newline();
    }
    transformed_writer.close();
}

From source file:com.cloudera.oryx.common.math.Vectors.java

/**
 * @return a vector of the same sparse-ness and dimension as {@code vec} but without data
 *//*www.  j a v a  2 s . co  m*/
public static RealVector like(RealVector vector) {
    int dimension = vector.getDimension();
    return vector instanceof SparseRealVector ? sparse(dimension) : dense(dimension);
}

From source file:lambertmrev.conversions.java

public static int[][] vec2kMat(RealVector in) {
    int dim = in.getDimension();
    int[][] mat = new int[dim][dim];
    for (int ii = 0; ii < dim; ii++) {
        int tmp = (int) in.getEntry(ii);
        mat[ii][tmp] = 1;//  w w  w . ja va 2 s  .  com
    }
    return mat;
}

From source file:edu.byu.nlp.stats.GammaDistribution.java

/**
 * Generates gamma samples, one for each element in shapes.
 * /*w w w.j  a v  a 2 s.co  m*/
 * @param shapes
 */
public static double[] sample(RealVector shapes, RandomGenerator rnd) {
    double[] gamma = new double[shapes.getDimension()];
    for (int i = 0; i < gamma.length; i++) {
        gamma[i] = sample(shapes.getEntry(i), rnd);
    }
    return gamma;
}

From source file:com.cloudera.oryx.kmeans.computation.VectorConvert.java

public static RealVector fromString(CharSequence input) {
    RealVector rv = VECTOR_FORMAT.parse(input.toString());
    int density = 0;
    for (int i = 0; i < rv.getDimension(); i++) {
        if (rv.getEntry(i) != 0.0) {
            density++;/*  ww w.j  a  v a  2 s.co  m*/
        }
    }
    if (2 * density < rv.getDimension()) {
        return new OpenMapRealVector(rv);
    } else {
        return rv;
    }
}

From source file:com.cloudera.oryx.kmeans.computation.pmml.ClusteringModelBuilder.java

private static String toString(RealVector vec) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < vec.getDimension(); i++) {
        if (i > 0) {
            sb.append(' ');
        }//  ww  w . j  a  va  2s  .  c om
        sb.append(vec.getEntry(i));
    }
    return sb.toString();
}

From source file:IO.java

public static void display(RealVector vec, String name) {
    int len = vec.getDimension();
    System.out.println(name + ":" + len);
    for (int i = 0; i < len; i++) {
        System.out.print(vec.getEntry(i) + ",");
    }/*from  ww  w .j  ava  2s. c  o m*/
    System.out.println();
}

From source file:com.cloudera.oryx.kmeans.computation.VectorConvert.java

public static MLVector fromVector(RealVector input) {
    final List<Double> values = Lists.newArrayList();
    MLVector.Builder vb = MLVector.newBuilder().setSize(input.getDimension()).setValues(values);
    if (input instanceof ArrayRealVector) {
        vb.setIndices(ImmutableList.<Integer>of());
        for (int i = 0; i < input.getDimension(); i++) {
            values.add(input.getEntry(i));
        }//w  w  w .  j  av a  2  s  .c  o  m
    } else {
        final List<Integer> indices = Lists.newArrayList();
        vb.setIndices(indices);
        input.walkInDefaultOrder(new AbstractRealVectorPreservingVisitor() {
            @Override
            public void visit(int index, double value) {
                indices.add(index);
                values.add(value);
            }
        });
    }
    if (input instanceof NamedRealVector) {
        vb.setId(((NamedRealVector) input).getName());
    } else {
        vb.setId("");
    }
    return vb.build();
}

From source file:edu.byu.nlp.math.RealVectors.java

public static double sum(RealVector v) {
    if (v == null) {
        return 0;
    }/*from  www .j a v  a 2 s  .  c  o m*/
    if (v.getDimension() == 0) {
        return 0;
    }
    return v.walkInOptimizedOrder(new RealVectorPreservingVisitor() {
        private double total = 0;

        @Override
        public void visit(int index, double value) {
            total += value;
        }

        @Override
        public void start(int dimension, int start, int end) {
        }

        @Override
        public double end() {
            return total;
        }
    });
}

From source file:edu.byu.nlp.math.RealVectors.java

/**
 * Adds vector a to b and stores the results in a.
 * /*from  ww  w .j  a v  a  2 s .c om*/
 * @throws NullPointerException if a or b are null 
 */
public static void addToSelf(RealVector a, RealVector b) {
    Preconditions.checkNotNull(a);
    Preconditions.checkNotNull(b);
    if (a.getDimension() != b.getDimension()) {
        throw new DimensionMismatchException(b.getDimension(), a.getDimension());
    }

    a.combineToSelf(1.0, 1.0, b);
}