Пример #1
0
        public void TestComputeSingleValueMultipleIterations()
        {
            double alpha = 1.0;
            SdrClassifier <int, int> sdr            = new SdrClassifier <int, int>(alpha);
            List <Object>            classification = new List <Object>(); // contains bucket index and actual values

            classification.Add(0);
            classification.Add(10);
            for (int i = 0; i < 10; i++)
            {
                sdr.Compute(i, classification, new int[] { 1, 5 });
            }
            Assert.AreEqual(1, sdr.Predict(new int[] { 1, 5 })[0], 0.5);
        }
Пример #2
0
        public void TestPredictShouldThrowEmptyBucketException()
        {
            double alpha = 0.1;
            SdrClassifier <int, int> sdr            = new SdrClassifier <int, int>(alpha);
            List <Object>            classification = new List <object>();

            classification.Add(4);
            classification.Add(34.7);

            try
            {
                sdr.Predict(new int[] { 1, 5 });
            }
            catch (Exception ex)
            {
                Assert.AreEqual(ex.Message, EMPTY_BUCKET_EXCEPTION);
            }
        }
Пример #3
0
        public void TestComputeSingleValueOneIteration()
        {
            double alpha = 0.1;
            SdrClassifier <int, int> sdr            = new SdrClassifier <int, int>(alpha);
            List <Object>            classification = new List <object>();

            classification.Add(4);
            classification.Add(34.7);

            // After this step bucket values will be updated
            sdr.Compute(0, classification, new int[] { 1, 5 });
            Assert.AreEqual(34.7, sdr.bucketEntries[4][0]);
            double[] predictionResult = sdr.Predict(new int[] { 1, 5 });

            // NOTE: if you take some of all predictions it should round upto ~ 1
            Assert.AreEqual(0.19151941467016101, predictionResult[0]);
            Assert.AreEqual(0.19151941467016101, predictionResult[1]);
            Assert.AreEqual(0.19151941467016101, predictionResult[2]);
            Assert.AreEqual(0.19151941467016101, predictionResult[3]);

            // Implies bucket 4 has highest probability to come
            Assert.AreEqual(0.23392234131935596, predictionResult[4]);
        }
Пример #4
0
        public void TestComplexLearning()
        {
            double alpha                            = 0.1;
            int    recordNumber                     = 1;
            SdrClassifier <int, int> sdr            = new SdrClassifier <int, int>(alpha);
            List <object>            classification = new List <object>(2);

            classification.Add(4);
            classification.Add(34.7);
            sdr.Compute(recordNumber, classification, new int[] { 1, 5, 9 });

            recordNumber     += 1;
            classification[0] = 5;
            classification[1] = 41.7;
            sdr.Compute(recordNumber, classification, new int[] { 0, 6, 9, 11 });

            recordNumber     += 1;
            classification[0] = 5;
            classification[1] = 44.9;
            sdr.Compute(recordNumber, classification, new int[] { 6, 9 });

            recordNumber     += 1;
            classification[0] = 4;
            classification[1] = 42.9;
            sdr.Compute(recordNumber, classification, new int[] { 1, 5, 9 });

            classification[0] = 4;
            classification[1] = 34.7;
            double[] predictedValues = sdr.Predict(new int[] { 1, 5, 9 });
            Assert.AreEqual(0.11184534926411586, predictedValues[0]);
            Assert.AreEqual(0.11184534926411586, predictedValues[1]);
            Assert.AreEqual(0.11184534926411586, predictedValues[2]);
            Assert.AreEqual(0.11184534926411586, predictedValues[3]);
            Assert.AreEqual(0.30775551952585922, predictedValues[4]);
            Assert.AreEqual(0.24486308341767732, predictedValues[5]);
        }