本文整理汇总了C#中HiddenMarkovModel.GetPi方法的典型用法代码示例。如果您正苦于以下问题:C# HiddenMarkovModel.GetPi方法的具体用法?C# HiddenMarkovModel.GetPi怎么用?C# HiddenMarkovModel.GetPi使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HiddenMarkovModel
的用法示例。
在下文中一共展示了HiddenMarkovModel.GetPi方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ViterbiCalculator
public ViterbiCalculator(IMLDataSet oseq, HiddenMarkovModel hmm)
{
if (oseq.Count < 1)
{
throw new EncogError("Must not have empty sequence");
}
this.delta = EngineArray.AllocateDouble2D((int)oseq.Count, hmm.StateCount);
this.psy = EngineArray.AllocateInt2D((int)oseq.Count, hmm.StateCount);
this._stateSequence = new int[oseq.Count];
for (int i = 0; i < hmm.StateCount; i++)
{
this.delta[0][i] = -Math.Log(hmm.GetPi(i))
- Math.Log(hmm.StateDistributions[i].Probability(
oseq[0]));
this.psy[0][i] = 0;
}
int t = 1;
for (int index = 1; index < oseq.Count; index++)
{
IMLDataPair observation = oseq[index];
for (int i = 0; i < hmm.StateCount; i++)
{
ComputeStep(hmm, observation, t, i);
}
t++;
}
this.lnProbability = Double.PositiveInfinity;
for (int i = 0; i < hmm.StateCount; i++)
{
double thisProbability = this.delta[oseq.Count - 1][i];
if (this.lnProbability > thisProbability)
{
this.lnProbability = thisProbability;
_stateSequence[oseq.Count - 1] = i;
}
}
this.lnProbability = -this.lnProbability;
for (int t2 = (int)(oseq.Count - 2); t2 >= 0; t2--)
{
_stateSequence[t2] = this.psy[t2 + 1][_stateSequence[t2 + 1]];
}
}
示例2: ComputeProbability
/// <summary>
/// Compute the probability.
/// </summary>
/// <param name="oseq">The sequence.</param>
/// <param name="hmm">THe hidden markov model.</param>
/// <param name="doAlpha">Perform alpha step?</param>
/// <param name="doBeta">Perform beta step?</param>
private void ComputeProbability(IMLDataSet oseq,
HiddenMarkovModel hmm, bool doAlpha, bool doBeta)
{
probability = 0.0;
if (doAlpha)
{
for (int i = 0; i < hmm.StateCount; i++)
{
probability += Alpha[oseq.Count - 1][i];
}
}
else
{
for (int i = 0; i < hmm.StateCount; i++)
{
probability += hmm.GetPi(i)
*hmm.StateDistributions[i].Probability(oseq[0])
*Beta[0][i];
}
}
}
示例3: ComputeAlphaInit
/// <summary>
/// Compute the alpha init.
/// </summary>
/// <param name="hmm">THe hidden markov model.</param>
/// <param name="o">The element.</param>
/// <param name="i">The state.</param>
protected void ComputeAlphaInit(HiddenMarkovModel hmm,
IMLDataPair o, int i)
{
Alpha[0][i] = hmm.GetPi(i)
*hmm.StateDistributions[i].Probability(o);
}