Search Results for

    Show / Hide Table of Contents

    Class GenericDiscreteBase<T, TThis>

    A generic base class for discrete distributions over a type T.

    Inheritance
    Object
    GenericDiscreteBase<T, TThis>
    DiscreteEnum<TEnum>
    Implements
    IDistribution<T>
    IDistribution
    ICloneable
    Diffable
    SettableToUniform
    HasPoint<T>
    CanGetLogProb<T>
    SettableTo<TThis>
    SettableToProduct<TThis>
    SettableToProduct<TThis, TThis>
    SettableToRatio<TThis>
    SettableToRatio<TThis, TThis>
    SettableToPower<TThis>
    SettableToWeightedSumExact<TThis>
    SettableToWeightedSum<TThis>
    SettableToPartialUniform<TThis>
    CanGetLogAverageOf<TThis>
    CanGetLogAverageOfPower<TThis>
    CanGetAverageLog<TThis>
    Sampleable<T>
    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
    [DataContract]
    public abstract class GenericDiscreteBase<T, TThis> : IDistribution<T>, IDistribution, ICloneable, Diffable, SettableToUniform, HasPoint<T>, CanGetLogProb<T>, SettableTo<TThis>, SettableToProduct<TThis>, SettableToProduct<TThis, TThis>, SettableToRatio<TThis>, SettableToRatio<TThis, TThis>, SettableToPower<TThis>, SettableToWeightedSumExact<TThis>, SettableToWeightedSum<TThis>, SettableToPartialUniform<TThis>, CanGetLogAverageOf<TThis>, CanGetLogAverageOfPower<TThis>, CanGetAverageLog<TThis>, Sampleable<T> where TThis : GenericDiscreteBase<T, TThis>, new()
    Type Parameters
    Name Description
    T

    The domain type of this distribution

    TThis

    The type of the subclass (allows factory methods return the correct type)

    Remarks

    This class makes it straightforward to implement discrete distributions over types other than int. It is only necessary to make a subclass of this abstract class, add a constructor and implement two methods to convert the desired type T to and from an integer.

    Internally, this class wraps a Discrete distribution and uses it to provide all functionality.

    Constructors

    GenericDiscreteBase(Int32, Sparsity)

    Creates a discrete

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

    The dimension of the underlying discrete

    Sparsity sparsity

    The sparsity of the underlying discrete

    Fields

    disc

    Declaration
    [DataMember]
    protected Discrete disc
    Field Value
    Type Description
    Discrete

    Properties

    Dimension

    The dimension of this discrete distribution.

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

    IndexRange

    Declaration
    public IntPair IndexRange { get; }
    Property Value
    Type Description
    IntPair

    IsPointMass

    Returns true if the distribution is a point mass.

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

    Item[T]

    Gets the probability of a given value.

    Declaration
    public double this[T value] { get; }
    Parameters
    Type Name Description
    T value
    Property Value
    Type Description
    Double

    Point

    Point property

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

    ValueRange

    Returns the domain values corresponding to the first and last indices of non-zero probabilities.

    Declaration
    public (T, T) ValueRange { get; }
    Property Value
    Type Description
    (T1, T2)<T, T>

    Methods

    Clone()

    Returns a clone of this distribution.

    Declaration
    public virtual object Clone()
    Returns
    Type Description
    Object

    ConvertFromInt(Int32)

    Converts an integer to an item of type T.

    Declaration
    public abstract T ConvertFromInt(int i)
    Parameters
    Type Name Description
    Int32 i
    Returns
    Type Description
    T

    ConvertToInt(T)

    Converts an item of type T to an integer.

    Declaration
    public abstract int ConvertToInt(T value)
    Parameters
    Type Name Description
    T value
    Returns
    Type Description
    Int32

    Equals(Object)

    Override of the Equals method

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

    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)

    FromDiscrete(Discrete)

    Creates a distribution using the probabilities from the given discrete distribution.

    Declaration
    public static TThis FromDiscrete(Discrete d)
    Parameters
    Type Name Description
    Discrete d
    Returns
    Type Description
    TThis

    FromProbs(Double[])

    Creates a distribution from the given probabilities.

    Declaration
    public static TThis FromProbs(params double[] probs)
    Parameters
    Type Name Description
    Double[] probs
    Returns
    Type Description
    TThis

    FromVector(Vector)

    Creates a distribution from the given vector of probabilities.

    Declaration
    [Construction(new string[]{"GetWorkspace"})]
    public static TThis FromVector(Vector probs)
    Parameters
    Type Name Description
    Vector probs
    Returns
    Type Description
    TThis

    GetAverageLog(TThis)

    The expected logarithm of that distribution under this distribution.

    Declaration
    public double GetAverageLog(TThis that)
    Parameters
    Type Name Description
    TThis 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()

    GetInternalDiscrete()

    Gets the internal discrete distribution that this distribution wraps.

    Declaration
    public Discrete GetInternalDiscrete()
    Returns
    Type Description
    Discrete

    The internal discrete distribution

    GetLogAverageOf(TThis)

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

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

    That discrete distribution

    Returns
    Type Description
    Double

    The log inner product

    GetLogAverageOfPower(TThis, Double)

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

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

    GetLogProb(T)

    Evaluates the log density at the specified domain value

    Declaration
    public double GetLogProb(T value)
    Parameters
    Type Name Description
    T value

    The point at which to evaluate

    Returns
    Type Description
    Double

    The log density

    GetLogProbs()

    Gets the log-probability at each index.

    Declaration
    public Vector GetLogProbs()
    Returns
    Type Description
    Vector

    The vector of log-probabilities

    GetMode()

    Gets the mode of the distribution

    Declaration
    public T GetMode()
    Returns
    Type Description
    T

    The value with the highest probability

    GetProbs()

    Gets the probability at each index.

    Declaration
    public Vector GetProbs()
    Returns
    Type Description
    Vector

    The vector of probabilities

    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 true if the distribution is uniform.

    Declaration
    public bool IsUniform()
    Returns
    Type Description
    Boolean

    True if uniform

    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

    PointMass(T)

    Creates a point mass distribution.

    Declaration
    [Construction(new string[]{"Point"}, UseWhen = "IsPointMass")]
    public static TThis PointMass(T value)
    Parameters
    Type Name Description
    T value

    The allowed value.

    Returns
    Type Description
    TThis

    Sample()

    Returns a sample from the distribution

    Declaration
    public T Sample()
    Returns
    Type Description
    T

    The sample value

    Sample(T)

    Returns a sample from the distribution

    Declaration
    public T Sample(T result)
    Parameters
    Type Name Description
    T result

    Not used

    Returns
    Type Description
    T

    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(TThis)

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

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

    That instance

    SetToPartialUniform()

    Sets the distribution to be uniform over its support.

    Declaration
    public void SetToPartialUniform()

    SetToPartialUniformOf(TThis)

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

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

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

    SetToPower(TThis, Double)

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

    Declaration
    public void SetToPower(TThis value, double exponent)
    Parameters
    Type Name Description
    TThis value

    The discrete distribution

    Double exponent

    The exponent

    SetToProduct(TThis, TThis)

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

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

    The first discrete distribution

    TThis b

    The second discrete distribution

    SetToRatio(TThis, TThis, Boolean)

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

    Declaration
    public void SetToRatio(TThis numerator, TThis denominator, bool forceProper)
    Parameters
    Type Name Description
    TThis numerator

    The numerator discrete distribution

    TThis denominator

    The denominator discrete distribution

    Boolean forceProper

    Whether to force the returned distribution to be proper

    SetToSum(Double, TThis, Double, TThis)

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

    Declaration
    public void SetToSum(double weight1, TThis value1, double weight2, TThis value2)
    Parameters
    Type Name Description
    Double weight1

    The first weight

    TThis value1

    The first discrete distribution

    Double weight2

    The second weight

    TThis value2

    The second discrete distribution

    SetToUniform()

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

    Declaration
    public void SetToUniform()

    ToString()

    Declaration
    public override string ToString()
    Returns
    Type Description
    String
    Overrides
    Object.ToString()

    ToString(T)

    Implements a custom ToString() for items of type T.

    Declaration
    protected virtual string ToString(T value)
    Parameters
    Type Name Description
    T value
    Returns
    Type Description
    String

    ToString(String)

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

    ToString(String, String)

    Returns a string representation of this distribution.

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

    Uniform()

    Creates a uniform distribution.

    Declaration
    [Construction(UseWhen = "IsUniform")]
    public static TThis Uniform()
    Returns
    Type Description
    TThis

    UniformInRange(T, T)

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

    Declaration
    public static TThis UniformInRange(T start, T end)
    Parameters
    Type Name Description
    T start

    The first value included in the distribution

    T end

    The last value included in the distribution

    Returns
    Type Description
    TThis

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

    UniformInRanges(T[])

    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 TThis UniformInRanges(params T[] startEndPairs)
    Parameters
    Type Name Description
    T[] startEndPairs

    Sequence of start and end pairs

    Returns
    Type Description
    TThis

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

    UniformInRanges(IEnumerable<T>)

    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 TThis UniformInRanges(IEnumerable<T> startEndPairs)
    Parameters
    Type Name Description
    IEnumerable<T> startEndPairs

    Sequence of start and end pairs

    Returns
    Type Description
    TThis

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

    UniformOver(T[])

    Creates a Discrete distribution which is uniform over the specified set of values and zero elsewhere.

    Declaration
    public static TThis UniformOver(params T[] values)
    Parameters
    Type Name Description
    T[] values

    The values.

    Returns
    Type Description
    TThis

    Discrete which is uniform over the specified set of values and zero elsewhere.

    UniformOver(IEnumerable<T>)

    Creates a Discrete distribution which is uniform over the specified set of values and zero elsewhere.

    Declaration
    public static TThis UniformOver(IEnumerable<T> values)
    Parameters
    Type Name Description
    IEnumerable<T> values

    The values.

    Returns
    Type Description
    TThis

    Discrete which is uniform over the specified set of values and zero elsewhere.

    Explicit Interface Implementations

    CanGetLogProb<T>.GetLogProb(T)

    Returns the log probability of the value under this distribution.

    Declaration
    double CanGetLogProb<T>.GetLogProb(T value)
    Parameters
    Type Name Description
    T value
    Returns
    Type Description
    Double

    Implements

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