public void PushTest2()
{
int[][] sequences;
var classifier = createClassifier(out sequences, rejection: true);
var running = new RunningMarkovClassifier(classifier);
for (int i = 0; i < sequences.Length; i++)
{
int[] sequence = sequences[i];
running.Clear();
for (int j = 0; j < sequence.Length; j++)
running.Push(sequence[j]);
double actualLikelihood;
int actual = running.Classification;
if (actual > -1)
{
double sum = running.Responses.Exp().Sum() + Math.Exp(running.Threshold);
actualLikelihood = Math.Exp(running.Responses[actual]) / sum;
}
else
{
double sum = running.Responses.Exp().Sum();
actualLikelihood = Math.Exp(running.Threshold) /
(sum + Math.Exp(running.Threshold));
}
double expectedLikelihood;
int expected = classifier.Compute(sequence, out expectedLikelihood);
Assert.AreEqual(expected, actual);
Assert.AreEqual(expectedLikelihood, actualLikelihood, 1e-8);
}
}