public void HiddenMarkovHiddenPotentialFunctionConstructorTest()
{
HiddenMarkovClassifier model = CreateModel1();
MarkovDiscreteFunction target = new MarkovDiscreteFunction(model);
var features = target.Features;
double[] weights = target.Weights;
Assert.AreEqual(22, features.Length);
Assert.AreEqual(22, weights.Length);
int k = 0;
for (int c = 0; c < model.Classes; c++)
{
Assert.AreEqual(Math.Log(model.Priors[c]), weights[k++]);
for (int i = 0; i < model[c].States; i++)
Assert.AreEqual(model[c].Probabilities[i], weights[k++]);
for (int i = 0; i < model[c].States; i++)
for (int j = 0; j < model[c].States; j++)
Assert.AreEqual(model[c].Transitions[i, j], weights[k++]);
for (int i = 0; i < model[c].States; i++)
for (int j = 0; j < model.Symbols; j++)
Assert.AreEqual(model[c].Emissions[i, j], weights[k++]);
}
}