예제 #1
0
    def test_predictDiscrete(self):
        s1 = self.createSignature(1, -1)
        s2 = self.createSignature(2, -2)
        s3 = self.createSignature(3, -3)
        s4 = self.createSignature(4, -4)

        trainFts = FeatureSet_Discrete()
        trainFts.AddSignature(s1, 0)
        trainFts.AddSignature(s2, 0)
        trainFts.AddSignature(s3, 1)
        trainFts.AddSignature(s4, 1)
        tmp = trainFts.ContiguousDataMatrix()

        # Values are chosen so that different weights give different predictions
        s5 = self.createSignature(0, -5)
        s6 = self.createSignature(5, 0)

        testFts = FeatureSet_Discrete()
        testFts.AddSignature(s5, 0)
        testFts.AddSignature(s6, 0)
        tmp = testFts.ContiguousDataMatrix()

        weights = FisherFeatureWeights()
        weights.names = ['ft [0]', 'ft [1]']
        weights.values = [2.0, 1.0]

        pred = DiscreteBatchClassificationResult.New(trainFts, testFts,
                                                     weights)
        self.assertEqual(len(pred.individual_results), 2)
        r1, r2 = pred.individual_results
        np.testing.assert_almost_equal(r1.marginal_probabilities,
                                       [0.975, 0.025],
                                       decimal=3)
        np.testing.assert_almost_equal(r2.marginal_probabilities,
                                       [0.025, 0.975],
                                       decimal=3)

        weights = FisherFeatureWeights()
        weights.names = ['ft [0]', 'ft [1]']
        weights.values = [1.0, 2.0]

        pred = DiscreteBatchClassificationResult.New(trainFts, testFts,
                                                     weights)
        self.assertEqual(len(pred.individual_results), 2)
        r1, r2 = pred.individual_results
        np.testing.assert_almost_equal(r1.marginal_probabilities,
                                       [0.025, 0.975],
                                       decimal=3)
        np.testing.assert_almost_equal(r2.marginal_probabilities,
                                       [0.975, 0.025],
                                       decimal=3)
예제 #2
0
    def test_thresholdWeights(self):
        w = FisherFeatureWeights()
        w.names = ["a", "b", "c"]
        w.values = [1.0, 2.0, 4.0]

        w1 = w.Threshold(2)
        self.assertEqual(w1.names, ["c", "b"])
        self.assertAlmostEqual(w1.values, [4.0, 2.0])
예제 #3
0
    def test_thresholdWeights(self):
        w = FisherFeatureWeights()
        w.names = ['a', 'b', 'c']
        w.values = [1.0, 2.0, 4.0]

        w1 = w.Threshold(2)
        self.assertEqual(w1.names, ['c', 'b'])
        self.assertAlmostEqual(w1.values, [4.0, 2.0])
예제 #4
0
    def test_thresholdWeights(self):
        w = FisherFeatureWeights()
        w.names = ['a', 'b', 'c']
        w.values = [1.0, 2.0, 4.0]

        w1 = w.Threshold(2)
        self.assertEqual(w1.names, ['c', 'b'])
        self.assertAlmostEqual(w1.values, [4.0, 2.0])
예제 #5
0
    def test_predictDiscrete(self):
        s1 = self.createSignature(1, -1)
        s2 = self.createSignature(2, -2)
        s3 = self.createSignature(3, -3)
        s4 = self.createSignature(4, -4)

        trainFts = FeatureSet_Discrete()
        trainFts.AddSignature(s1, 0)
        trainFts.AddSignature(s2, 0)
        trainFts.AddSignature(s3, 1)
        trainFts.AddSignature(s4, 1)
        tmp = trainFts.ContiguousDataMatrix()

        # Values are chosen so that different weights give different predictions
        s5 = self.createSignature(0, -5)
        s6 = self.createSignature(5, 0)

        testFts = FeatureSet_Discrete()
        testFts.AddSignature(s5, 0)
        testFts.AddSignature(s6, 0)
        tmp = testFts.ContiguousDataMatrix()

        weights = FisherFeatureWeights()
        weights.names = ['ft [0]', 'ft [1]']
        weights.values = [2.0, 1.0]

        pred = DiscreteBatchClassificationResult.New(trainFts, testFts, weights)
        self.assertEqual(len(pred.individual_results), 2)
        r1, r2 = pred.individual_results
        np.testing.assert_almost_equal(
            r1.marginal_probabilities, [0.975, 0.025], decimal=3)
        np.testing.assert_almost_equal(
            r2.marginal_probabilities, [0.025, 0.975], decimal=3)

        weights = FisherFeatureWeights()
        weights.names = ['ft [0]', 'ft [1]']
        weights.values = [1.0, 2.0]

        pred = DiscreteBatchClassificationResult.New(trainFts, testFts, weights)
        self.assertEqual(len(pred.individual_results), 2)
        r1, r2 = pred.individual_results
        np.testing.assert_almost_equal(
            r1.marginal_probabilities, [0.025, 0.975], decimal=3)
        np.testing.assert_almost_equal(
            r2.marginal_probabilities, [0.975, 0.025], decimal=3)