Search Results for

    Show / Hide Table of Contents

    Class DistributionStructArray<T, DomainType>

    A distribution over an array of type DomainType, where each element is independent and has distribution of type T

    Inheritance
    Object
    ArrayBase<T>
    Array<T>
    DistributionArray<T>
    DistributionArray<T, DomainType>
    DistributionStructArray<T, DomainType>
    Implements
    IArray<T>
    IList<T>
    ICollection<T>
    CanSetAllElementsTo<T>
    IReadOnlyList<T>
    IReadOnlyCollection<T>
    IEnumerable<T>
    IEnumerable
    SettableTo<T[]>
    SettableTo<Array<T>>
    ConvertibleToArray
    IDistribution<DomainType[]>
    IDistribution
    ICloneable
    Diffable
    SettableToUniform
    HasPoint<DomainType[]>
    CanGetLogProb<DomainType[]>
    Sampleable<DomainType[]>
    IArrayFactory<T, DistributionStructArray<T, DomainType>>
    SettableTo<DistributionStructArray<T, DomainType>>
    SettableToProduct<DistributionStructArray<T, DomainType>>
    SettableToProduct<DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>>
    SettableToRatio<DistributionStructArray<T, DomainType>>
    SettableToRatio<DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>>
    SettableToPower<DistributionStructArray<T, DomainType>>
    SettableToWeightedSum<DistributionStructArray<T, DomainType>>
    CanGetLogAverageOf<DistributionStructArray<T, DomainType>>
    CanGetLogAverageOfPower<DistributionStructArray<T, DomainType>>
    CanGetAverageLog<DistributionStructArray<T, DomainType>>
    Inherited Members
    DistributionArray<T, DomainType>.Point
    DistributionArray<T, DomainType>.IsPointMass
    DistributionArray<T, DomainType>.GetLogProb(DomainType[])
    DistributionArray<T, DomainType>.Sample()
    DistributionArray<T, DomainType>.Sample(DomainType[])
    DistributionArray<T>.SetToUniform()
    DistributionArray<T>.IsUniform()
    Array<T>.SetTo(T[])
    Array<T>.SetTo(Array<T>)
    Array<T>.CopyTo(T[])
    Array<T>.ToArray()
    Array<T>.ConvertibleToArray.ToArray()
    Array<T>.ToArray<TOutput>(Converter<T, TOutput>, Array<T>)
    Array<T>.Rank
    Array<T>.GetLength(Int32)
    Array<T>.Equals(Object)
    Array<T>.GetHashCode()
    ArrayBase<T>.array
    ArrayBase<T>.Item[Int32]
    ArrayBase<T>.IndexOf(T)
    ArrayBase<T>.Insert(Int32, T)
    ArrayBase<T>.RemoveAt(Int32)
    ArrayBase<T>.Add(T)
    ArrayBase<T>.Clear()
    ArrayBase<T>.Contains(T)
    ArrayBase<T>.CopyTo(T[], Int32)
    ArrayBase<T>.Count
    ArrayBase<T>.IsReadOnly
    ArrayBase<T>.Remove(T)
    ArrayBase<T>.GetEnumerator()
    ArrayBase<T>.IEnumerable.GetEnumerator()
    ArrayBase<T>.ToString()
    ArrayBase<T>.CheckCompatible(IArray<T>)
    ArrayBase<T>.SetAllElementsTo(T)
    ArrayBase<T>.FindIndex(Predicate<T>)
    ArrayBase<T>.ForEach(Action<T>)
    ArrayBase<T>.ForEach<U>(U[], Action<T, U>)
    ArrayBase<T>.ForEach<U, V>(U[], V[], Action<T, U, V>)
    ArrayBase<T>.SetToFunction<U>(U[], Func<U, T>)
    ArrayBase<T>.SetToFunction<U>(ArrayBase<U>, Func<U, T>)
    ArrayBase<T>.SetToFunction<U, V>(ArrayBase<U>, V[], Func<U, V, T>)
    ArrayBase<T>.SetToFunction<U, V, W>(ArrayBase<U>, V[], W[], Func<U, V, W, T>)
    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 DistributionStructArray<T, DomainType> : DistributionArray<T, DomainType>, IArray<T>, IList<T>, ICollection<T>, CanSetAllElementsTo<T>, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable, SettableTo<T[]>, SettableTo<Array<T>>, ConvertibleToArray, IDistribution<DomainType[]>, IDistribution, ICloneable, Diffable, SettableToUniform, HasPoint<DomainType[]>, CanGetLogProb<DomainType[]>, Sampleable<DomainType[]>, IArrayFactory<T, DistributionStructArray<T, DomainType>>, SettableTo<DistributionStructArray<T, DomainType>>, SettableToProduct<DistributionStructArray<T, DomainType>>, SettableToProduct<DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>>, SettableToRatio<DistributionStructArray<T, DomainType>>, SettableToRatio<DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>>, SettableToPower<DistributionStructArray<T, DomainType>>, SettableToWeightedSum<DistributionStructArray<T, DomainType>>, CanGetLogAverageOf<DistributionStructArray<T, DomainType>>, CanGetLogAverageOfPower<DistributionStructArray<T, DomainType>>, CanGetAverageLog<DistributionStructArray<T, DomainType>> where T : struct, SettableToProduct<T>, SettableToRatio<T>, SettableToPower<T>, SettableToWeightedSum<T>, CanGetLogAverageOf<T>, CanGetLogAverageOfPower<T>, CanGetAverageLog<T>, IDistribution<DomainType>, Sampleable<DomainType>
    Type Parameters
    Name Description
    T

    Distribution type of an element. Must be a value type all the way down, i.e. must not hold any references.

    DomainType

    Domain type of an element

    Remarks

    This is an extension of DistributionArray that requires T to be a value type. This class only exists for efficiency, to avoid unnecessary cloning.

    Constructors

    DistributionStructArray()

    Parameterless constructor needed for serialization

    Declaration
    protected DistributionStructArray()

    DistributionStructArray(T, Int32)

    Create a new distribution struct array of a specified value and length

    Declaration
    public DistributionStructArray(T value, int length)
    Parameters
    Type Name Description
    T value
    Int32 length

    DistributionStructArray(T[])

    Create a new distribution struct array from an array of distributions

    Declaration
    public DistributionStructArray(T[] array)
    Parameters
    Type Name Description
    T[] array

    DistributionStructArray(Array<T>)

    Copy constructor

    Declaration
    public DistributionStructArray(Array<T> that)
    Parameters
    Type Name Description
    Array<T> that

    DistributionStructArray(Int32)

    Create a new distribution struct array of a specified length

    Declaration
    public DistributionStructArray(int length)
    Parameters
    Type Name Description
    Int32 length

    DistributionStructArray(Int32, Func<Int32, T>)

    Create a new distribution struct array of a specified length and initial values.

    Declaration
    public DistributionStructArray(int length, Func<int, T> init)
    Parameters
    Type Name Description
    Int32 length
    Func<Int32, T> init

    Function that maps an index to a value.

    Methods

    Clone()

    Clone the distribution

    Declaration
    public override object Clone()
    Returns
    Type Description
    Object
    Overrides
    Microsoft.ML.Probabilistic.Collections.Array<T>.Clone()

    CreateArray(Int32, Func<Int32, T>)

    Declaration
    public DistributionStructArray<T, DomainType> CreateArray(int length, Func<int, T> init)
    Parameters
    Type Name Description
    Int32 length
    Func<Int32, T> init
    Returns
    Type Description
    DistributionStructArray<T, DomainType>

    GetAverageLog(DistributionStructArray<T, DomainType>)

    The expected logarithm of that distribution under this distribution.

    Declaration
    public double GetAverageLog(DistributionStructArray<T, DomainType> that)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> 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. For a DistributionArray, this specializes to: sum_i sum_x this[i].Evaluate(x)*Math.Log(that[i].Evaluate(x)) = sum_i this[i].GetAverageLog(that[i])

    GetLogAverageOf(DistributionStructArray<T, DomainType>)

    The log-probability that two distributions would draw the same sample.

    Declaration
    public double GetLogAverageOf(DistributionStructArray<T, DomainType> that)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> that
    Returns
    Type Description
    Double

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

    Remarks

    This can be considered a type of inner product between distributions. Another name might be "LogAverage" to go with "GetAverageLog". For a DistributionArray, this specializes to: sum_i Math.Log(sum_x this[i].Evaluate(x)*that[i].Evaluate(x)) = sum_i this[i].GetLogAverageOf(that[i])

    GetLogAverageOfPower(DistributionStructArray<T, DomainType>, Double)

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

    Declaration
    public double GetLogAverageOfPower(DistributionStructArray<T, DomainType> that, double power)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> that
    Double power
    Returns
    Type Description
    Double

    MaxDiff(Object)

    The maximum difference in parameters between this distribution array and that distribution array

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

    That distribution array

    Returns
    Type Description
    Double

    The maximum difference

    Overrides
    Microsoft.ML.Probabilistic.Distributions.DistributionArray<T>.MaxDiff(System.Object)

    Sample(DomainType[])

    Get a sample from the distribution

    Declaration
    public override DomainType[] Sample(DomainType[] result)
    Parameters
    Type Name Description
    DomainType[] result

    Where to put the result

    Returns
    Type Description
    DomainType[]

    A sample

    Overrides
    Microsoft.ML.Probabilistic.Distributions.DistributionArray<T, DomainType>.Sample(DomainType[])

    SetTo(DistributionStructArray<T, DomainType>)

    Set the parameters of this distribution to match those of the given distribution (by value)

    Declaration
    public void SetTo(DistributionStructArray<T, DomainType> that)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> that

    SetToPower(DistributionStructArray<T, DomainType>, Double)

    Set the parameters to represent the power of a source distribution to some exponent

    Declaration
    public void SetToPower(DistributionStructArray<T, DomainType> a, double exponent)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> a

    The source distribution array

    Double exponent

    The exponent

    SetToProduct(DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>)

    Set the parameters to represent the product of two distributions

    Declaration
    public void SetToProduct(DistributionStructArray<T, DomainType> a, DistributionStructArray<T, DomainType> b)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> a

    The first distribution array

    DistributionStructArray<T, DomainType> b

    The second distribution array

    SetToRatio(DistributionStructArray<T, DomainType>, DistributionStructArray<T, DomainType>, Boolean)

    Set the parameters to represent the ratio of two distributions

    Declaration
    public void SetToRatio(DistributionStructArray<T, DomainType> numerator, DistributionStructArray<T, DomainType> denominator, bool forceProper)
    Parameters
    Type Name Description
    DistributionStructArray<T, DomainType> numerator

    The numerator distribution array

    DistributionStructArray<T, DomainType> denominator

    The denominator distribution array

    Boolean forceProper

    SetToSum(Double, DistributionStructArray<T, DomainType>, Double, DistributionStructArray<T, DomainType>)

    Set the parameters to match the moments of a mixture of two distributions

    Declaration
    public void SetToSum(double weight1, DistributionStructArray<T, DomainType> a, double weight2, DistributionStructArray<T, DomainType> b)
    Parameters
    Type Name Description
    Double weight1

    The first weight

    DistributionStructArray<T, DomainType> a

    The first distribution array

    Double weight2

    The second weight

    DistributionStructArray<T, DomainType> b

    The second distribution array

    Implements

    IArray<T>
    System.Collections.Generic.IList<T>
    System.Collections.Generic.ICollection<T>
    CanSetAllElementsTo<T>
    System.Collections.Generic.IReadOnlyList<T>
    System.Collections.Generic.IReadOnlyCollection<T>
    System.Collections.Generic.IEnumerable<T>
    System.Collections.IEnumerable
    SettableTo<T>
    SettableTo<T>
    ConvertibleToArray
    IDistribution<T>
    IDistribution
    System.ICloneable
    Diffable
    SettableToUniform
    HasPoint<T>
    CanGetLogProb<T>
    Sampleable<T>
    IArrayFactory<ItemType, ArrayType>
    SettableTo<T>
    SettableToProduct<T>
    SettableToProduct<T, U>
    SettableToRatio<T>
    SettableToRatio<T, U>
    SettableToPower<T>
    SettableToWeightedSum<T>
    CanGetLogAverageOf<T>
    CanGetLogAverageOfPower<T>
    CanGetAverageLog<T>

    Extension Methods

    CollectionExtensions.AddRange<T>(ICollection<T>, IEnumerable<T>)
    CollectionExtensions.ContainsAll<T>(ICollection<T>, IEnumerable<T>)
    CollectionExtensions.ContainsAny<T>(ICollection<T>, IEnumerable<T>)
    EnumerableExtensions.ForEach<T>(IEnumerable<T>, Action<T>)
    EnumerableExtensions.ForEach<T>(IEnumerable, Action<T>)
    EnumerableExtensions.ForEach<T>(IEnumerable<T>, Action<Int32, T>)
    EnumerableExtensions.ForEach<T>(IEnumerable, Action<Int32, T>)
    EnumerableExtensions.Sum<TSource>(IEnumerable<TSource>, Func<TSource, UInt32>)
    EnumerableExtensions.Sum<TSource>(IEnumerable<TSource>, Func<TSource, UInt64>)
    EnumerableExtensions.ValueEquals<T>(IEnumerable<T>, IEnumerable<T>)
    EnumerableExtensions.IndexOf<T>(IEnumerable<T>, T)
    EnumerableExtensions.IndexOf<T>(IEnumerable, T)
    EnumerableExtensions.FindIndex<T>(IEnumerable<T>, Predicate<T>)
    EnumerableExtensions.FindIndex<T>(IEnumerable, Predicate<T>)
    EnumerableExtensions.FindAllIndex<T>(IEnumerable<T>, Predicate<T>)
    EnumerableExtensions.IndexOfAll<T>(IEnumerable<T>, T)
    EnumerableExtensions.Skip<T>(IEnumerable<T>, Int32, out List<T>)
    EnumerableExtensions.CopyTo<T>(IEnumerable<T>, T[], Int32)
    EnumerableExtensions.ToReadOnlyList<T>(IEnumerable<T>)
    IEnumerableExensions.EnumerableReduce<T, TRes>(IEnumerable<T>, TRes, Func<TRes, T, TRes>, Func<TRes, T, Int32, TRes>)
    IEnumerableExensions.EnumerableSum<T>(IEnumerable<T>, Func<T, Double>)
    IEnumerableExensions.ListZip<TFirst, TSecond, TResult>(IList<TFirst>, IEnumerable<TSecond>, Func<TFirst, TSecond, TResult>)
    IEnumerableExensions.ListZip<TFirst, TSecond, TThird, TResult>(IList<TFirst>, IEnumerable<TSecond>, IEnumerable<TThird>, Func<TFirst, TSecond, TThird, TResult>)
    IEnumerableExensions.ListZip<TFirst, TSecond, TThird, TFourth, TResult>(IList<TFirst>, IList<TSecond>, IList<TThird>, IList<TFourth>, Func<TFirst, TSecond, TThird, TFourth, TResult>)
    IListExtensions.IsSparse<T>(IList<T>)
    IListExtensions.ListSelect<T, T2>(IList<T>, Func<T, T2>)
    IListExtensions.ListReduce<T, TRes>(IList<T>, TRes, Func<TRes, T, TRes>)
    IListExtensions.ListReduce<T, T2, TRes>(IList<T>, IEnumerable<T2>, TRes, Func<TRes, T, T2, TRes>)
    IListExtensions.SetTo<T>(IList<T>, IEnumerable<T>)
    IListExtensions.AsReadOnly<T>(IList<T>)
    ReadOnlyArray.ToReadOnlyArray<T>(IEnumerable<T>)
    In This Article
    Back to top Copyright © .NET Foundation. All rights reserved.