List of usage examples for org.apache.commons.math3.distribution MultivariateNormalDistribution sample
public double[] sample()
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 . ja va 2 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:edu.oregonstate.eecs.mcplan.ml.Datasets.java
public static Pair<ArrayList<double[]>, int[]> twoVerticalGaussian2D(final RandomGenerator rng, final int Nper_class) { final int Nclasses = 2; final ArrayList<double[]> X = new ArrayList<double[]>(); final int[] Y = new int[Nclasses * Nper_class]; final double[][] covariance = new double[][] { { 0.1 * 0.1, 0.0 }, { 0.0, 1 } }; final MultivariateNormalDistribution p = new MultivariateNormalDistribution(rng, new double[] { 0.0, 0.0 }, covariance);// ww w. j a v a 2s .c om for (int c = 0; c < Nclasses; ++c) { for (int i = 0; i < Nper_class; ++i) { final double[] x = p.sample(); x[0] += c; X.add(x); Y[c * Nper_class + i] = c; } } return Pair.makePair(X, Y); }
From source file:com.datumbox.framework.statistics.distributions.ContinuousDistributions.java
/** * Samples from Multinomial Normal Distribution. * /*ww w . j a v a 2 s . c o m*/ * @param mean * @param covariance * @return A multinomialGaussianSample from the Multinomial Normal Distribution */ public static double[] multinomialGaussianSample(double[] mean, double[][] covariance) { MultivariateNormalDistribution gaussian = new MultivariateNormalDistribution(mean, covariance); gaussian.reseedRandomGenerator(RandomValue.randomGenerator.nextLong()); return gaussian.sample(); }
From source file:com.datumbox.framework.core.statistics.distributions.ContinuousDistributions.java
/** * Samples from Multinomial Normal Distribution. * /*from ww w .ja v a2 s .c o m*/ * @param mean * @param covariance * @return A multinomialGaussianSample from the Multinomial Normal Distribution */ public static double[] multinomialGaussianSample(double[] mean, double[][] covariance) { MultivariateNormalDistribution gaussian = new MultivariateNormalDistribution(mean, covariance); gaussian.reseedRandomGenerator(RandomGenerator.getThreadLocalRandom().nextLong()); return gaussian.sample(); }
From source file:es.csic.iiia.planes.util.InverseWishartDistributionTest.java
private double testGaussian(double scale) { double[] means = new double[] { 0, 0 }; double[][] covariances = new double[][] { { scale, 0 }, { 0, scale } }; MultivariateNormalDistribution uniform = new MultivariateNormalDistribution(means, covariances); DescriptiveStatistics stats = new DescriptiveStatistics(NORMAL_SAMPLES); for (int i = 0; i < NORMAL_SAMPLES; i++) { double[] xy = uniform.sample(); final double x = xy[0]; final double y = xy[1]; stats.addValue(Math.sqrt(x * x + y * y)); }/*from w ww. jav a 2 s . c o m*/ return stats.getPercentile(90); }
From source file:es.csic.iiia.planes.util.InverseWishartDistributionTest.java
private double computeRadius(InverseWishartDistribution instance) { double[] means = new double[] { 0, 0 }; MultivariateNormalDistribution uniform = null; while (uniform == null) { try {//from w w w . j av a 2 s . co m double[][] covariances = instance.sample().getData(); uniform = new MultivariateNormalDistribution(means, covariances); } catch (MathUnsupportedOperationException ex) { } } DescriptiveStatistics stats = new DescriptiveStatistics(NORMAL_SAMPLES); for (int i = 0; i < NORMAL_SAMPLES; i++) { double[] xy = uniform.sample(); final double x = xy[0]; final double y = xy[1]; stats.addValue(Math.sqrt(x * x + y * y)); } return stats.getPercentile(90); }
From source file:org.deeplearning4j.examples.misc.lossfunctions.GaussianMixtureIterator.java
public DataSet nextThrows(int num) throws Exception { INDArray input = Nd4j.zeros(num, inputColumns()); INDArray output = Nd4j.zeros(num, totalOutcomes()); for (int i = 0; i < num; i++) { double x = mRNG.nextDouble() - 0.5; // The effect of this is two two-dimensional gaussians // mixed 50/50 with one another. // The first gaussian is fixed with a mean of (-0.5, -0.5). // The second gaussian has a mean that varies from -0.25 to 0.25. // The variance of both is 0.01 (std-deviation 0.1) boolean mid = mRNG.nextBoolean(); double meanFactor = mid ? -0.5 : 0.5 * x; double sigma = mid ? 0.01 : 0.01; MultivariateNormalDistribution mnd = new MultivariateNormalDistribution( new double[] { 1 * meanFactor, 1 * meanFactor }, new double[][] { { sigma, 0.0 }, { 0.0, sigma } }); double[] samples = mnd.sample(); input.putScalar(new int[] { i, 0 }, x * 10); output.putScalar(new int[] { i, 0 }, samples[0]); output.putScalar(new int[] { i, 1 }, samples[1]); }/*from w ww.ja v a2 s . c o m*/ return new DataSet(input, output); }