mlpack
Functions
distribution_test.cpp File Reference
#include <mlpack/core.hpp>
#include <mlpack/core/dists/regression_distribution.hpp>
#include <mlpack/core/metrics/mahalanobis_distance.hpp>
#include "catch.hpp"
#include "serialization.hpp"
#include "test_catch_tools.hpp"
Include dependency graph for distribution_test.cpp:

Functions

 TEST_CASE ("DiscreteDistributionConstructorTest", "[DistributionTest]")
 Discrete Distribution Tests. More...
 
 TEST_CASE ("DiscreteDistributionProbabilityTest", "[DistributionTest]")
 Make sure we get the probabilities of observations right.
 
 TEST_CASE ("DiscreteDistributionRandomTest", "[DistributionTest]")
 Make sure we get random observations correct.
 
 TEST_CASE ("DiscreteDistributionTrainTest", "[DistributionTest]")
 Make sure we can estimate from observations correctly.
 
 TEST_CASE ("DiscreteDistributionTrainProbTest", "[DistributionTest]")
 Estimate from observations with probabilities.
 
 TEST_CASE ("MultiDiscreteDistributionTrainProbTest", "[DistributionTest]")
 Achieve multidimensional probability distribution.
 
 TEST_CASE ("MultiDiscreteDistributionConstructorTest", "[DistributionTest]")
 Make sure we initialize multidimensional probability distribution correctly.
 
 TEST_CASE ("MultiDiscreteDistributionTrainTest", "[DistributionTest]")
 Achieve multidimensional probability distribution.
 
 TEST_CASE ("MultiDiscreteDistributionTrainProTest", "[DistributionTest]")
 Estimate multidimensional probability distribution from observations with probabilities.
 
 TEST_CASE ("DiscreteLogProbabilityTest", "[DistributionTest]")
 Test the LogProbability() function, for multiple points in the multivariate Discrete case.
 
 TEST_CASE ("DiscreteProbabilityTest", "[DistributionTest]")
 Test the Probability() function, for multiple points in the multivariate Discrete case.
 
 TEST_CASE ("GaussianDistributionEmptyConstructor", "[DistributionTest]")
 Gaussian Distribution Tests. More...
 
 TEST_CASE ("GaussianDistributionDimensionalityConstructor", "[DistributionTest]")
 Make sure Gaussian distributions are initialized to the correct dimensionality.
 
 TEST_CASE ("GaussianDistributionDistributionConstructor", "[DistributionTest]")
 Make sure Gaussian distributions are initialized correctly when we give a mean and covariance.
 
 TEST_CASE ("GaussianDistributionProbabilityTest", "[DistributionTest]")
 Make sure the probability of observations is correct.
 
 TEST_CASE ("GaussianUnivariateProbabilityTest", "[DistributionTest]")
 Test GaussianDistribution::Probability() in the univariate case.
 
 TEST_CASE ("GaussianMultivariateProbabilityTest", "[DistributionTest]")
 Test GaussianDistribution::Probability() in the multivariate case.
 
 TEST_CASE ("GaussianMultipointMultivariateProbabilityTest", "[DistributionTest]")
 Test the phi() function, for multiple points in the multivariate Gaussian case.
 
 TEST_CASE ("GaussianDistributionRandomTest", "[DistributionTest]")
 Make sure random observations follow the probability distribution correctly.
 
 TEST_CASE ("GaussianDistributionTrainTest", "[DistributionTest]")
 Make sure that we can properly estimate from given observations.
 
 TEST_CASE ("GaussianDistributionTrainWithProbabilitiesTest", "[DistributionTest]")
 This test verifies the fitting of GaussianDistribution works properly when probabilities for each sample is given.
 
 TEST_CASE ("GaussianDistributionWithProbabilties1Test", "[DistributionTest]")
 This test ensures that the same result is obtained when trained with probabilities all set to 1 and with no probabilities at all.
 
 TEST_CASE ("GaussianDistributionTrainWithTwoDistProbabilitiesTest", "[DistributionTest]")
 This test draws points from two different normal distributions, sets the probabilities for points from the first distribution to something small and the probabilities for the second to something large. More...
 
 TEST_CASE ("GammaDistributionTrainTest", "[DistributionTest]")
 Gamma Distribution Tests. More...
 
 TEST_CASE ("GammaDistributionTrainWithProbabilitiesTest", "[DistributionTest]")
 This test verifies that the fitting procedure for GammaDistribution works properly when probabilities for each sample is given.
 
 TEST_CASE ("GammaDistributionTrainAllProbabilities1Test", "[DistributionTest]")
 This test ensures that the same result is obtained when trained with probabilities all set to 1 and with no probabilities at all.
 
 TEST_CASE ("GammaDistributionTrainTwoDistProbabilities1Test", "[DistributionTest]")
 This test draws points from two different gamma distributions, sets the probabilities for the points from the first distribution to something small and the probabilities for the second to something large. More...
 
 TEST_CASE ("GammaDistributionFittingTest", "[DistributionTest]")
 This test verifies that the fitting procedure for GammaDistribution works properly and converges near the actual gamma parameters. More...
 
 TEST_CASE ("GammaDistributionTrainConstructorTest", "[DistributionTest]")
 Test that Train() and the constructor that takes data give the same resulting distribution.
 
 TEST_CASE ("GammaDistributionTrainStatisticsTest", "[DistributionTest]")
 Test that Train() with a dataset and Train() with dataset statistics return the same results.
 
 TEST_CASE ("GammaDistributionRandomTest", "[DistributionTest]")
 Tests that Random() generates points that can be reasonably well fit by the distribution that generated them.
 
 TEST_CASE ("GammaDistributionProbabilityTest", "[DistributionTest]")
 
 TEST_CASE ("GammaDistributionLogProbabilityTest", "[DistributionTest]")
 
 TEST_CASE ("DiscreteDistributionTest", "[DistributionTest]")
 Discrete Distribution serialization test.
 
 TEST_CASE ("GaussianDistributionTest", "[DistributionTest]")
 Gaussian Distribution serialization test.
 
 TEST_CASE ("LaplaceDistributionTest", "[DistributionTest]")
 Laplace Distribution serialization test.
 
 TEST_CASE ("LaplaceDistributionProbabilityTest", "[DistributionTest]")
 Laplace Distribution Probability Test.
 
 TEST_CASE ("LaplaceDistributionLogProbabilityTest", "[DistributionTest]")
 Laplace Distribution Log Probability Test.
 
 TEST_CASE ("MahalanobisDistanceTest", "[DistributionTest]")
 Mahalanobis Distance serialization test.
 
 TEST_CASE ("RegressionDistributionTest", "[DistributionTest]")
 Regression distribution serialization test.
 
 TEST_CASE ("DiagonalGaussianDistributionEmptyConstructor", "[DistributionTest]")
 Diagonal Covariance Gaussian Distribution Tests. More...
 
 TEST_CASE ("DiagonalGaussianDistributionDimensionalityConstructor", "[DistributionTest]")
 Make sure Diagonal Covariance Gaussian distributions are initialized to the correct dimensionality.
 
 TEST_CASE ("DiagonalGaussianDistributionConstructor", "[DistributionTest]")
 Make sure Diagonal Covariance Gaussian distributions are initialized correctly when we give a mean and covariance.
 
 TEST_CASE ("DiagonalGaussianDistributionProbabilityTest", "[DistributionTest]")
 Make sure the probability of observations is correct. More...
 
 TEST_CASE ("DiagonalGaussianUnivariateProbabilityTest", "[DistributionTest]")
 Test DiagonalGaussianDistribution::Probability() in the univariate case. More...
 
 TEST_CASE ("DiagonalGaussianMultivariateProbabilityTest", "[DistributionTest]")
 Test DiagonalGaussianDistribution::Probability() in the multivariate case. More...
 
 TEST_CASE ("DiagonalGaussianMultipointMultivariateProbabilityTest", "[DistributionTest]")
 Test the phi() function, for multiple points in the multivariate Gaussian case. More...
 
 TEST_CASE ("DiagonalGaussianDistributionRandomTest", "[DistributionTest]")
 Make sure random observations follow the probability distribution correctly.
 
 TEST_CASE ("DiagonalGaussianDistributionTrainTest", "[DistributionTest]")
 Make sure that we can properly estimate from given observations.
 
 TEST_CASE ("DiagonalGaussianUnbiasedEstimatorTest", "[DistributionTest]")
 Make sure the unbiased estimator of the weighted sample works correctly. More...
 
 TEST_CASE ("DiagonalGaussianWeightedParametersReductionTest", "[DistributionTest]")
 Make sure that if all weights are the same, i.e. More...
 

Detailed Description

Author
Ryan Curtin
Yannis Mentekidis
Rohan Raj

Tests for the classes:

mlpack is free software; you may redistribute it and/or modify it under the terms of the 3-clause BSD license. You should have received a copy of the 3-clause BSD license along with mlpack. If not, see http://www.opensource.org/licenses/BSD-3-Clause for more information.

Function Documentation

◆ TEST_CASE() [1/13]

TEST_CASE ( "DiscreteDistributionConstructorTest"  ,
""  [DistributionTest] 
)

Discrete Distribution Tests.

Make sure we initialize correctly.

◆ TEST_CASE() [2/13]

TEST_CASE ( "GaussianDistributionEmptyConstructor"  ,
""  [DistributionTest] 
)

Gaussian Distribution Tests.

Make sure Gaussian distributions are initialized correctly.

◆ TEST_CASE() [3/13]

TEST_CASE ( "GaussianDistributionTrainWithTwoDistProbabilitiesTest"  ,
""  [DistributionTest] 
)

This test draws points from two different normal distributions, sets the probabilities for points from the first distribution to something small and the probabilities for the second to something large.

We expect that the distribution we recover after training to be the same as the second normal distribution (the one with high probabilities).

◆ TEST_CASE() [4/13]

TEST_CASE ( "GammaDistributionTrainTest"  ,
""  [DistributionTest] 
)

Gamma Distribution Tests.

Make sure that using an object to fit one reference set and then asking to fit another works properly.

◆ TEST_CASE() [5/13]

TEST_CASE ( "GammaDistributionTrainTwoDistProbabilities1Test"  ,
""  [DistributionTest] 
)

This test draws points from two different gamma distributions, sets the probabilities for the points from the first distribution to something small and the probabilities for the second to something large.

It ensures that the gamma distribution recovered has the same parameters as the second gamma distribution with high probabilities.

◆ TEST_CASE() [6/13]

TEST_CASE ( "GammaDistributionFittingTest"  ,
""  [DistributionTest] 
)

This test verifies that the fitting procedure for GammaDistribution works properly and converges near the actual gamma parameters.

We do this twice with different alpha/beta parameters so we make sure we don't have some weird bug that always converges to the same number.

Iteration 1 (first parameter set)

Iteration 2 (different parameter set)

◆ TEST_CASE() [7/13]

TEST_CASE ( "DiagonalGaussianDistributionEmptyConstructor"  ,
""  [DistributionTest] 
)

Diagonal Covariance Gaussian Distribution Tests.

Make sure Diagonal Covariance Gaussian distributions are initialized correctly.

◆ TEST_CASE() [8/13]

TEST_CASE ( "DiagonalGaussianDistributionProbabilityTest"  ,
""  [DistributionTest] 
)

Make sure the probability of observations is correct.

The values were calculated using 'dmvnorm' in R.

◆ TEST_CASE() [9/13]

TEST_CASE ( "DiagonalGaussianUnivariateProbabilityTest"  ,
""  [DistributionTest] 
)

Test DiagonalGaussianDistribution::Probability() in the univariate case.

The values were calculated using 'dmvnorm' in R.

◆ TEST_CASE() [10/13]

TEST_CASE ( "DiagonalGaussianMultivariateProbabilityTest"  ,
""  [DistributionTest] 
)

Test DiagonalGaussianDistribution::Probability() in the multivariate case.

The values were calculated using 'dmvnorm' in R.

◆ TEST_CASE() [11/13]

TEST_CASE ( "DiagonalGaussianMultipointMultivariateProbabilityTest"  ,
""  [DistributionTest] 
)

Test the phi() function, for multiple points in the multivariate Gaussian case.

The values were calculated using 'dmvnorm' in R.

◆ TEST_CASE() [12/13]

TEST_CASE ( "DiagonalGaussianUnbiasedEstimatorTest"  ,
""  [DistributionTest] 
)

Make sure the unbiased estimator of the weighted sample works correctly.

The values were calculated using 'cov.wt' in R.

◆ TEST_CASE() [13/13]

TEST_CASE ( "DiagonalGaussianWeightedParametersReductionTest"  ,
""  [DistributionTest] 
)

Make sure that if all weights are the same, i.e.

w_i / V1 = 1 / N, then the weighted mean and covariance reduce to the unweighted sample mean and covariance.