Accord.Tests.Statistics.Models.Fields.MarkovContinuousFunctionTest.HiddenMarkovHiddenPotentialFunctionConstructorTest C# (CSharp) Method

HiddenMarkovHiddenPotentialFunctionConstructorTest() private method

        public void HiddenMarkovHiddenPotentialFunctionConstructorTest()
        {
            HiddenMarkovClassifier<NormalDistribution> model = CreateModel1();

            var target = new MarkovContinuousFunction(model);

            var features = target.Features;
            double[] weights = target.Weights;

            Assert.AreEqual(26, features.Length);
            Assert.AreEqual(26, 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[c].Dimension; j++)
                    {
                        double mean = model[c].Emissions[i].Mean;
                        double var = model[c].Emissions[i].Variance;

                        double l2ps = System.Math.Log(2 * System.Math.PI * var);

                        Assert.AreEqual(-0.5 * (l2ps + (mean * mean) / var), weights[k++]);
                        Assert.AreEqual(mean / var, weights[k++]);
                        Assert.AreEqual(-1.0 / (2 * var), weights[k++]);
                    }
                }
            }

        }