Beispiel #1
0
        public double ComputeError(TInput[] inputs, int[] expectedOutputs)
        {
            var classifier = (IClassifier <TInput, bool>)Model;
            var loss       = new ZeroOneLoss(Classes.Decide(expectedOutputs))
            {
                Mean = true
            };

            return(loss.Loss(classifier.Decide(inputs)));
        }
        public void kaggle_digits_with_compress()
        {
            string root       = TestContext.CurrentContext.TestDirectory;
            var    training   = Properties.Resources.trainingsample;
            var    validation = Properties.Resources.validationsample;

            var tset         = readData(training);
            var observations = tset.Item1;
            var labels       = tset.Item2;

            var teacher = new MulticlassSupportVectorLearning <Linear>();

#if MONO
            teacher.ParallelOptions.MaxDegreeOfParallelism = 1;
#endif
            var svm = teacher.Learn(observations, labels);

            Assert.AreEqual(50, svm.Models[0][0].SupportVectors.Length);
            Assert.AreEqual(127, svm.Models[1][0].SupportVectors.Length);
            svm.Compress();
            Assert.AreEqual(1, svm.Models[0][0].SupportVectors.Length);
            Assert.AreEqual(1, svm.Models[1][0].SupportVectors.Length);

            {
                var trainingLoss = new ZeroOneLoss(labels)
                {
                    Mean = true
                };

                double error = trainingLoss.Loss(svm.Decide(observations));
                Assert.AreEqual(0.054, error);
            }

            {
                var vset             = readData(validation);
                var validationData   = vset.Item1;
                var validationLabels = vset.Item2;

                var validationLoss = new ZeroOneLoss(validationLabels)
                {
                    Mean = true
                };

                double val = validationLoss.Loss(svm.Decide(validationData));
                Assert.AreEqual(0.082, val);
            }
        }
Beispiel #3
0
        public void kaggle_digits_old_style()
        {
            string root       = Environment.CurrentDirectory;
            var    training   = Properties.Resources.trainingsample;
            var    validation = Properties.Resources.validationsample;

            var tset         = readData(training);
            var observations = tset.Item1;
            var labels       = tset.Item2;

            var teacher = new MulticlassSupportVectorLearning();

#if MONO
            teacher.ParallelOptions.MaxDegreeOfParallelism = 1;
#endif
            var svm = teacher.Learn(observations, labels);

            {
                var trainingLoss = new ZeroOneLoss(labels)
                {
                    Mean = true
                };

                double error = trainingLoss.Loss(svm.Decide(observations));
                Assert.AreEqual(0.054, error);
            }

            {
                var vset             = readData(validation);
                var validationData   = vset.Item1;
                var validationLabels = vset.Item2;

                var validationLoss = new ZeroOneLoss(validationLabels)
                {
                    Mean = true
                };

                double val = validationLoss.Loss(svm.Decide(validationData));
                Assert.AreEqual(0.082, val);
            }
        }
        public void kaggle_digits_with_compress()
        {
            string root = Environment.CurrentDirectory;
            var training = Properties.Resources.trainingsample;
            var validation = Properties.Resources.validationsample;

            var tset = readData(training);
            var observations = tset.Item1;
            var labels = tset.Item2;

            var teacher = new MulticlassSupportVectorLearning<Linear>();

            var svm = teacher.Learn(observations, labels);

            Assert.AreEqual(50, svm.Models[0][0].SupportVectors.Length);
            Assert.AreEqual(127, svm.Models[1][0].SupportVectors.Length);
            svm.Compress();
            Assert.AreEqual(1, svm.Models[0][0].SupportVectors.Length);
            Assert.AreEqual(1, svm.Models[1][0].SupportVectors.Length);

            {
                var trainingLoss = new ZeroOneLoss(labels)
                {
                    Mean = true
                };

                double error = trainingLoss.Loss(svm.Decide(observations));
                Assert.AreEqual(0.054, error);
            }

            {
                var vset = readData(validation);
                var validationData = vset.Item1;
                var validationLabels = vset.Item2;

                var validationLoss = new ZeroOneLoss(validationLabels)
                {
                    Mean = true
                };

                double val = validationLoss.Loss(svm.Decide(validationData));
                Assert.AreEqual(0.082, val);
            }
        }