public void TrainModelAndTestModelTest(string trainFile, string testFile)
        {
            var trainModel = new TrainModel(2, 0.1);
            var trainDataset = new ClassifiedDataset(trainFile, 64, 2);
            trainModel.Train(trainDataset.GetClassifiedVectors());

            var testModel = new TestModel(2, 0.1);
            var testDataset = new UnclassifiedDataset(testFile, 64);
            var testData = testDataset.GetDataVectors().Select(v => v.FeatureVector).ToArray();
            var results = testModel.Test(trainModel.GetInferredPosterier(), testData);

            Assert.That(results.Length, Is.EqualTo(testData.Length));
        }
        public void TrainModelIncrementalTrainTest(string trainFile1, string trainFile2)
        {
            var model = new TrainModel(2, 0.1);

            var dataset1 = new ClassifiedDataset(trainFile1, 64, 2);
            model.TrainIncremental(dataset1.GetClassifiedVectors());
            var posteriors1 = model.GetInferredPosterier();

            var dataset2 = new ClassifiedDataset(trainFile2, 64, 2);
            model.TrainIncremental(dataset2.GetClassifiedVectors());
            var posteriors2 = model.GetInferredPosterier();

            Assert.AreEqual(posteriors1.Length, posteriors2.Length);

            Assert.That(posteriors1.Intersect(posteriors2).Count() < posteriors1.Length);
        }
        public void TrainModelWithFeatureSelectionTest(string trainFile, int[] featureSelection)
        {
            var model = new TrainModel(2, 0.1);
            var dataset = new ClassifiedDataset(trainFile, 64, featureSelection, 2);

            model.Train(dataset.GetClassifiedVectors());

            var posteriors = model.GetInferredPosterier();

            Assert.That(posteriors.Length, Is.EqualTo(2));

            foreach (var p in posteriors)
            {
                Assert.That(p.Dimension, Is.EqualTo(featureSelection.Length));
            }
        }