Source code for secml.ml.stats.c_distribution_gaussian

"""
.. module:: GaussianDistribution
   :synopsis: A dataset with an array of patterns and corresponding labels

.. moduleauthor:: Ambra Demontis <ambra.demontis@unica.it>
.. moduleauthor:: Marco Melis <marco.melis@unica.it>

"""
from scipy.stats import multivariate_normal
from secml.array import CArray
from secml.core import CCreator


[docs]class CDistributionGaussian(CCreator): """A multivariate normal random variable. Parameters ---------- mean : scalar, optional Mean of the distribution (default zero) cov : array_like or scalar, optional Covariance matrix of the distribution (default one) """ def __init__(self, mean=0, cov=1): self.mean = mean self.cov = cov
[docs] def pdf(self, data): """Probability density function. Parameters ---------- data : CArray Quantiles, with the last axis of x denoting the components. Returns ------- pdf: CArray Probability density function computed at input data. """ cov = self.cov if isinstance(cov, CArray): cov = cov.tondarray() return CArray(multivariate_normal.pdf(data.tondarray(), self.mean, cov))
[docs] def logpdf(self, data): """Log of the probability density function. Parameters ---------- data : CArray Quantiles, with the last axis of x denoting the components. Returns ------- pdf: CArray Probability density function computed at input data. """ cov = self.cov if isinstance(cov, CArray): cov = cov.tondarray() return CArray(multivariate_normal.logpdf(data.tondarray(), self.mean, cov))