Search Results for

    Show / Hide Table of Contents

    Class Discrete

    An arbitrary distribution over integers [0,D-1].

    Inheritance
    Object
    Discrete
    Implements
    IDistribution<Int32>
    IDistribution
    ICloneable
    HasPoint<Int32>
    CanGetLogProb<Int32>
    SettableTo<Discrete>
    SettableToProduct<Discrete>
    SettableToProduct<Discrete, Discrete>
    Diffable
    SettableToUniform
    SettableToPartialUniform<Discrete>
    SettableToRatio<Discrete>
    SettableToRatio<Discrete, Discrete>
    SettableToPower<Discrete>
    SettableToWeightedSumExact<Discrete>
    SettableToWeightedSum<Discrete>
    CanGetLogAverageOf<Discrete>
    CanGetLogAverageOfPower<Discrete>
    CanGetAverageLog<Discrete>
    CanGetLogNormalizer
    Sampleable<Int32>
    CanGetMean<Double>
    CanGetVariance<Double>
    CanGetMode<Int32>
    Inherited Members
    Object.Equals(Object, Object)
    Object.GetType()
    Object.MemberwiseClone()
    Object.ReferenceEquals(Object, Object)
    Namespace: Microsoft.ML.Probabilistic.Distributions
    Assembly: Microsoft.ML.Probabilistic.dll
    Syntax
    [Serializable]
    [Quality(QualityBand.Mature)]
    [DataContract]
    public class Discrete : IDistribution<int>, IDistribution, ICloneable, HasPoint<int>, CanGetLogProb<int>, SettableTo<Discrete>, SettableToProduct<Discrete>, SettableToProduct<Discrete, Discrete>, Diffable, SettableToUniform, SettableToPartialUniform<Discrete>, SettableToRatio<Discrete>, SettableToRatio<Discrete, Discrete>, SettableToPower<Discrete>, SettableToWeightedSumExact<Discrete>, SettableToWeightedSum<Discrete>, CanGetLogAverageOf<Discrete>, CanGetLogAverageOfPower<Discrete>, CanGetAverageLog<Discrete>, CanGetLogNormalizer, Sampleable<int>, CanGetMean<double>, CanGetVariance<double>, CanGetMode<int>
    Remarks

    The distribution is represented by a normalized Vector of length D. The Vector may be all zero to indicate an empty distribution such as the product of conflicting point masses. The probability of value x is available as this[x] or GetLogProb(x).

    Constructors

    Discrete(Discrete)

    Copy constructor

    Declaration
    public Discrete(Discrete that)
    Parameters
    Type Name Description
    Discrete that

    The discrete instance to copy

    Discrete(Vector)

    Creates a Discrete distribution from the given probabilities.

    Declaration
    [Construction(new string[]{"GetWorkspace"})]
    public Discrete(Vector probs)
    Parameters
    Type Name Description
    Vector probs

    Discrete(Double[])

    Creates a Discrete distribution from the given probabilities.

    Declaration
    public Discrete(params double[] probs)
    Parameters
    Type Name Description
    Double[] probs

    Discrete(Int32)

    Creates a uniform Discrete distribution, from 0 to dimension-1.

    Declaration
    protected Discrete(int dimension)
    Parameters
    Type Name Description
    Int32 dimension

    Discrete(Int32, Sparsity)

    Creates a uniform Discrete distribution with a specified sparsity, from 0 to dimension-1.

    Declaration
    protected Discrete(int dimension, Sparsity sparsity)
    Parameters
    Type Name Description
    Int32 dimension

    Dimension

    Sparsity sparsity

    Sparsity

    Fields

    prob

    Probability of each value (when not a point mass).

    Declaration
    [DataMember]
    protected Vector prob
    Field Value
    Type Description
    Vector
    Remarks

    prob.Length == D. prob[i] >= 0. sum_i prob[i] = 1.

    Properties

    Dimension

    Gets the dimension of this discrete distribution

    Declaration
    public int Dimension { get; }
    Property Value
    Type Description
    Int32

    IsPointMass

    Indicates whether or not this instance is a point mass.

    Declaration
    [IgnoreDataMember]
    public bool IsPointMass { get; }
    Property Value
    Type Description
    Boolean

    Item[Int32]

    Gets or sets the probability at the given index.

    Declaration
    public double this[int index] { get; }
    Parameters
    Type Name Description
    Int32 index
    Property Value
    Type Description
    Double

    Point

    Sets/gets this distribution as a point distribution

    Declaration
    [IgnoreDataMember]
    public int Point { get; set; }
    Property Value
    Type Description
    Int32

    Sparsity

    Gets the Sparsity specification of this Distribution.

    Declaration
    public Sparsity Sparsity { get; }
    Property Value
    Type Description
    Sparsity

    Methods

    Clone()

    Clones this discrete distribution.

    Declaration
    public object Clone()
    Returns
    Type Description
    Object

    An object which is a clone of the current instance. This must be cast if you want to assign the result to a Discrete type

    Equals(Object)

    Override of the Equals method

    Declaration
    public override bool Equals(object that)
    Parameters
    Type Name Description
    Object that

    The instance to compare to

    Returns
    Type Description
    Boolean

    True if the two distributions are the same in value, false otherwise

    Overrides
    Object.Equals(Object)

    Evaluate(Int32)

    Evaluates the density at the specified domain value

    Declaration
    public double Evaluate(int value)
    Parameters
    Type Name Description
    Int32 value

    The point at which to evaluate

    Returns
    Type Description
    Double

    The density

    GetAverageLog(Discrete)

    The expected logarithm of that distribution under this distribution.

    Declaration
    public double GetAverageLog(Discrete that)
    Parameters
    Type Name Description
    Discrete that

    The distribution to take the logarithm of.

    Returns
    Type Description
    Double

    sum_x this.Evaluate(x)*Math.Log(that.Evaluate(x))

    Remarks

    This is also known as the cross entropy.

    GetHashCode()

    Override of GetHashCode method

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    The hash code for this instance

    Overrides
    Object.GetHashCode()

    GetLogAverageOf(Discrete)

    The log of the integral of the product of this discrete and that discrete

    Declaration
    public double GetLogAverageOf(Discrete that)
    Parameters
    Type Name Description
    Discrete that

    That discrete distribution

    Returns
    Type Description
    Double

    The log inner product

    GetLogAverageOfPower(Discrete, Double)

    Get the integral of this distribution times another distribution raised to a power.

    Declaration
    public double GetLogAverageOfPower(Discrete that, double power)
    Parameters
    Type Name Description
    Discrete that
    Double power
    Returns
    Type Description
    Double

    GetLogNormalizer()

    Gets the log normalizer of the distribution

    Declaration
    public double GetLogNormalizer()
    Returns
    Type Description
    Double

    GetLogProb(Int32)

    Evaluates the log density at the specified domain value

    Declaration
    public double GetLogProb(int value)
    Parameters
    Type Name Description
    Int32 value

    The point at which to evaluate

    Returns
    Type Description
    Double

    The log density

    GetLogProbs()

    Gets the vector of log probabilities for this distribution.

    Declaration
    public Vector GetLogProbs()
    Returns
    Type Description
    Vector

    GetMean()

    Gets the mean of the distribution

    Declaration
    public double GetMean()
    Returns
    Type Description
    Double

    GetMedian()

    Gets the median of the distribution

    Declaration
    public int GetMedian()
    Returns
    Type Description
    Int32

    The median

    GetMode()

    Gets the mode of the distribution

    Declaration
    public int GetMode()
    Returns
    Type Description
    Int32

    GetProbs()

    Gets the probability at each index.

    Declaration
    public Vector GetProbs()
    Returns
    Type Description
    Vector

    The vector of probabilities

    GetProbs(Vector)

    Gets the probability at each index.

    Declaration
    public Vector GetProbs(Vector result)
    Parameters
    Type Name Description
    Vector result

    When used internally, can be the same object as prob.

    Returns
    Type Description
    Vector

    result

    GetVariance()

    Gets the variance of the distribution

    Declaration
    public double GetVariance()
    Returns
    Type Description
    Double

    GetWorkspace()

    Gets a Vector of size this.Dimension.

    Declaration
    public Vector GetWorkspace()
    Returns
    Type Description
    Vector

    A pointer to the internal probs Vector of the object.

    Remarks

    This function is intended to be used with SetProbs, to avoid allocating a new Vector. The return value should not be interpreted as a probs vector, but only a workspace filled with unknown data that can be overwritten. Until SetProbs is called, the distribution object is invalid once this workspace is modified.

    IsPartialUniform()

    Checks whether the distribution is uniform over its support.

    Declaration
    public bool IsPartialUniform()
    Returns
    Type Description
    Boolean

    True if the distribution is uniform over its support, false otherwise.

    IsUniform()

    Returns whether the discrete distribution is uniform or not

    Declaration
    public bool IsUniform()
    Returns
    Type Description
    Boolean

    True if uniform

    IsZero()

    Declaration
    public bool IsZero()
    Returns
    Type Description
    Boolean

    MaxDiff(Object)

    Gets the maximum difference between the parameters of this discrete and that discrete

    Declaration
    public double MaxDiff(object that)
    Parameters
    Type Name Description
    Object that

    That discrete

    Returns
    Type Description
    Double

    The maximum difference

    Normalize()

    Normalizes this distribution - i.e. sets the probabilities to sum to 1. This is called internally after product operations, sum operations etc.

    Declaration
    protected double Normalize()
    Returns
    Type Description
    Double

    The normalizing factor

    PointMass(Int32, Int32)

    Creates a Discrete distribution which allows only one value.

    Declaration
    [Construction(new string[]{"Point", "Dimension"}, UseWhen = "IsPointMass")]
    public static Discrete PointMass(int value, int numValues)
    Parameters
    Type Name Description
    Int32 value

    The allowed value.

    Int32 numValues

    The number of values in the domain.

    Returns
    Type Description
    Discrete

    ProbEqual(Discrete)

    The integral of the product between this discrete and that discrete. This is the probability that samples from this instance and that instance are equal

    Declaration
    public double ProbEqual(Discrete that)
    Parameters
    Type Name Description
    Discrete that

    That discrete distribution

    Returns
    Type Description
    Double

    The inner product

    Sample()

    Returns a sample from this discrete distribution

    Declaration
    public int Sample()
    Returns
    Type Description
    Int32

    The sample value

    Sample(Vector)

    Returns a sample from a discrete distribution with the specified probabilities

    Declaration
    public static int Sample(Vector probs)
    Parameters
    Type Name Description
    Vector probs

    The parameters of the discrete distribution

    Returns
    Type Description
    Int32

    The sample value

    Sample(Int32)

    Returns a sample from this discrete distribution

    Declaration
    public int Sample(int result)
    Parameters
    Type Name Description
    Int32 result

    This parameter is ignored and is only present to support the Sampleable interface

    Returns
    Type Description
    Int32

    The sample value

    SetProbs(Vector)

    Sets the probability of each index.

    Declaration
    public void SetProbs(Vector probs)
    Parameters
    Type Name Description
    Vector probs

    A vector of non-negative, finite numbers. Need not sum to 1.

    Remarks

    Instead of allocating your own Vector to pass to SetProbs, you can call GetWorkspace(), fill in the resulting Vector, and then pass it to SetProbs.

    SetTo(Discrete)

    Sets the parameters of this instance to the parameters of that instance

    Declaration
    public void SetTo(Discrete value)
    Parameters
    Type Name Description
    Discrete value

    That instance

    SetToPadded(Discrete)

    Set this distribution to match the given distribution, but possibly over a larger domain

    Declaration
    public void SetToPadded(Discrete value)
    Parameters
    Type Name Description
    Discrete value

    SetToPartialUniform()

    Sets the distribution to be uniform over its support.

    Declaration
    public void SetToPartialUniform()

    SetToPartialUniformOf(Discrete)

    Sets the distribution to be uniform over the support of a given distribution.

    Declaration
    public void SetToPartialUniformOf(Discrete dist)
    Parameters
    Type Name Description
    Discrete dist

    The distribution which support will be used to setup the current distribution.

    SetToPower(Discrete, Double)

    Sets the parameters to represent the power of a discrete distributions.

    Declaration
    public void SetToPower(Discrete dist, double exponent)
    Parameters
    Type Name Description
    Discrete dist

    The discrete distribution

    Double exponent

    The exponent

    SetToProduct(Discrete, Discrete)

    Sets the parameters to represent the product of two discrete distributions.

    Declaration
    public void SetToProduct(Discrete a, Discrete b)
    Parameters
    Type Name Description
    Discrete a

    The first discrete distribution

    Discrete b

    The second discrete distribution

    SetToRatio(Discrete, Discrete, Boolean)

    Declaration
    public void SetToRatio(Discrete numerator, Discrete denominator, bool forceProper = false)
    Parameters
    Type Name Description
    Discrete numerator
    Discrete denominator
    Boolean forceProper

    SetToSum(Double, Discrete, Double, Discrete)

    Sets the parameters to represent the weighted sum of two discrete distributions.

    Declaration
    public void SetToSum(double weight1, Discrete dist1, double weight2, Discrete dist2)
    Parameters
    Type Name Description
    Double weight1

    The first weight

    Discrete dist1

    The first discrete distribution. Can be the same object as this

    Double weight2

    The second weight

    Discrete dist2

    The second discrete distribution. Cannot be the same object as this

    SetToUniform()

    Sets this instance to a uniform discrete (i.e. probabilities all equal)

    Declaration
    public void SetToUniform()

    ToString()

    Override of ToString method

    Declaration
    public override string ToString()
    Returns
    Type Description
    String

    String representation of this instance

    Overrides
    Object.ToString()

    ToString(String)

    Declaration
    public virtual string ToString(string format)
    Parameters
    Type Name Description
    String format
    Returns
    Type Description
    String

    ToString(String, String)

    Declaration
    public virtual string ToString(string format, string delimiter)
    Parameters
    Type Name Description
    String format
    String delimiter
    Returns
    Type Description
    String

    Uniform(Int32)

    Creates a uniform Discrete distribution over the values from 0 to numValues-1

    Declaration
    public static Discrete Uniform(int numValues)
    Parameters
    Type Name Description
    Int32 numValues
    Returns
    Type Description
    Discrete

    Uniform(Int32, Sparsity)

    Creates a uniform Discrete distribution with a specified sparsity over the values from 0 to numValues-1

    Declaration
    [Construction(new string[]{"Dimension", "Sparsity"}, UseWhen = "IsUniform")]
    public static Discrete Uniform(int numValues, Sparsity sparsity)
    Parameters
    Type Name Description
    Int32 numValues

    Number of values

    Sparsity sparsity

    Sparsity

    Returns
    Type Description
    Discrete

    UniformInRange(Int32, Int32, Int32)

    Creates a Discrete distribution which is uniform over values from start to end inclusive.

    Declaration
    public static Discrete UniformInRange(int numValues, int start, int end)
    Parameters
    Type Name Description
    Int32 numValues

    Number of values

    Int32 start

    The first value included in the distribution

    Int32 end

    The last value included in the distribution

    Returns
    Type Description
    Discrete

    Discrete which is uniform over the specified range (and zero elsewhere).

    UniformInRanges(Int32, IEnumerable<Int32>)

    Creates a Discrete distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in an enumerable whose length must therefore be even.

    Declaration
    public static Discrete UniformInRanges(int numValues, IEnumerable<int> startEndPairs)
    Parameters
    Type Name Description
    Int32 numValues

    Number of values

    IEnumerable<Int32> startEndPairs

    Sequence of start and end pairs

    Returns
    Type Description
    Discrete

    Discrete which is uniform over the specified ranges (and zero elsewhere).

    UniformInRanges(Int32, Int32[])

    Creates a Discrete distribution which is uniform over values in multiple ranges specified by pairs of start and end values. These pairs are specified as adjacent values in an array whose length must therefore be even.

    Declaration
    public static Discrete UniformInRanges(int numValues, params int[] startEndPairs)
    Parameters
    Type Name Description
    Int32 numValues

    Number of values

    Int32[] startEndPairs

    Sequence of start and end pairs

    Returns
    Type Description
    Discrete

    Discrete which is uniform over the specified ranges (and zero elsewhere).

    Zero(Int32)

    Declaration
    public static Discrete Zero(int numValues)
    Parameters
    Type Name Description
    Int32 numValues
    Returns
    Type Description
    Discrete

    Operators

    Division(Discrete, Discrete)

    Creates a Discrete distribution which is the ratio of two Discrete distributions

    Declaration
    public static Discrete operator /(Discrete numerator, Discrete denominator)
    Parameters
    Type Name Description
    Discrete numerator

    The numerator distribution

    Discrete denominator

    The denominator distribution

    Returns
    Type Description
    Discrete

    The resulting Discrete distribution

    ExclusiveOr(Discrete, Double)

    Raises a distribution to a power.

    Declaration
    public static Discrete operator ^(Discrete dist, double exponent)
    Parameters
    Type Name Description
    Discrete dist

    The distribution.

    Double exponent

    The power to raise to.

    Returns
    Type Description
    Discrete

    dist raised to power exponent.

    Multiply(Discrete, Discrete)

    Creates a Discrete distribution which is the product of two Discrete distributions

    Declaration
    public static Discrete operator *(Discrete a, Discrete b)
    Parameters
    Type Name Description
    Discrete a

    The first distribution

    Discrete b

    The second distribution

    Returns
    Type Description
    Discrete

    The resulting Discrete distribution

    Implements

    IDistribution<T>
    IDistribution
    System.ICloneable
    HasPoint<T>
    CanGetLogProb<T>
    SettableTo<T>
    SettableToProduct<T>
    SettableToProduct<T, U>
    Diffable
    SettableToUniform
    SettableToPartialUniform<TDist>
    SettableToRatio<T>
    SettableToRatio<T, U>
    SettableToPower<T>
    SettableToWeightedSumExact<T>
    SettableToWeightedSum<T>
    CanGetLogAverageOf<T>
    CanGetLogAverageOfPower<T>
    CanGetAverageLog<T>
    CanGetLogNormalizer
    Sampleable<T>
    CanGetMean<MeanType>
    CanGetVariance<VarType>
    CanGetMode<ModeType>
    In This Article
    Back to top Copyright © .NET Foundation. All rights reserved.