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); }
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); } }
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]); }
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]); }