def test_construction(self): d = self.iris petal_length = d.columns.petal_length disc = distribution.Continuous(d, "petal length") disc7 = distribution.Continuous(self.freqs) self.assertIsInstance(disc, np.ndarray) self.assertIsNone(disc7.variable) self.assertEqual(disc7.unknowns, 0) self.assertEqual(disc, disc7) disc7 = distribution.Continuous(self.freqs, petal_length) self.assertIsInstance(disc, np.ndarray) self.assertIs(disc7.variable, petal_length) self.assertEqual(disc7.unknowns, 0) self.assertEqual(disc, disc7) disc1 = distribution.Continuous(10, petal_length) self.assertIsInstance(disc1, np.ndarray) self.assertIs(disc7.variable, petal_length) self.assertEqual(disc7.unknowns, 0) assert_dist_equal(disc1, np.zeros((2, 10))) dd = [list(range(5)), [1, 1, 2, 5, 1]] disc2 = distribution.Continuous(dd) self.assertIsInstance(disc2, np.ndarray) self.assertIsNone(disc2.variable) self.assertEqual(disc2.unknowns, 0) assert_dist_equal(disc2, dd)
def test_normalize(self): d = self.iris petal_length = d.columns.petal_length disc = distribution.Continuous(d, "petal length") assert_dist_equal(disc, self.freqs) disc.normalize() self.freqs[1, :] /= 150 assert_dist_equal(disc, self.freqs) disc1 = distribution.Continuous(10, petal_length) disc1.normalize() f = np.zeros((2, 10)) f[1, :] = 0.1 assert_dist_equal(disc1, f)
def test_hash(self): d = self.iris petal_length = d.columns.petal_length disc = distribution.Continuous(d, "petal length") disc2 = distribution.Continuous(d, petal_length) self.assertEqual(hash(disc), hash(disc2)) disc2[0, 0] += 1 self.assertNotEqual(hash(disc), hash(disc2)) disc2[0, 0] -= 1 self.assertEqual(hash(disc), hash(disc2)) disc2.unknowns += 1 self.assertNotEqual(hash(disc), hash(disc2))
def test_normalize(self): d = data.Table("iris") petal_length = d.columns.petal_length disc = distribution.Continuous(d, "petal length") np.testing.assert_almost_equal(disc, self.freqs) disc.normalize() self.freqs[1, :] /= 150 np.testing.assert_almost_equal(disc, self.freqs) disc1 = distribution.Continuous(10, petal_length) disc1.normalize() f = np.zeros((2, 10)) f[1, :] = 0.1 np.testing.assert_almost_equal(disc1, f)
def test_standard_deviation(self): # pylint: disable=bad-whitespace x = np.array([[0, 5, 10], [9, 0, 1]]) dist = distribution.Continuous(x) self.assertEqual(dist.standard_deviation(), np.std(([0] * 9) + [10]))
def test_variance(self): # pylint: disable=bad-whitespace x = np.array([[0, 5, 10], [9, 0, 1]]) dist = distribution.Continuous(x) self.assertEqual(dist.variance(), np.var(([0] * 9) + [10]))
def test_random(self): d = self.iris disc = distribution.Continuous(d, "petal length") ans = set() for i in range(1000): v = disc.sample() self.assertIn(v, self.freqs) ans.add(v) self.assertGreater(len(ans), 10)
def test_from_table(self): d = self.iris petal_length = d.columns.petal_length for attr in ["petal length", d.domain[2], 2]: disc = distribution.Continuous(d, attr) self.assertIsInstance(disc, np.ndarray) self.assertIs(disc.variable, petal_length) self.assertEqual(disc.unknowns, 0) assert_dist_almost_equal(disc, self.freqs)
def test_from_table(self): d = data.Table("iris") petal_length = d.columns.petal_length disc = distribution.Continuous(d, "petal length") self.assertIsInstance(disc, np.ndarray) self.assertIs(disc.variable, petal_length) self.assertEqual(disc.unknowns, 0) np.testing.assert_almost_equal(disc, self.freqs) disc2 = distribution.Continuous(d, d.domain[2]) self.assertIsInstance(disc2, np.ndarray) self.assertIs(disc2.variable, petal_length) self.assertEqual(disc, disc2) disc3 = distribution.Continuous(d, 2) self.assertIsInstance(disc3, np.ndarray) self.assertIs(disc3.variable, petal_length) self.assertEqual(disc, disc3)
def test_random(self): d = data.Table("iris") disc = distribution.Continuous(d, "petal length") ans = set() for i in range(1000): v = disc.random() self.assertTrue(v in self.freqs) ans.add(v) self.assertGreater(len(ans), 10)
def test_deepcopy(self): d1 = distribution.Continuous(self.iris, 0) dc = copy.deepcopy(d1) # This always worked because `other` wasn't required to have `unknowns` self.assertEqual(d1, dc) # This failed before implementing `__deepcopy__` self.assertEqual(dc, d1) self.assertEqual(hash(d1), hash(dc)) # Test that `dc` has the required attributes self.assertEqual(dc.variable, d1.variable) self.assertEqual(dc.unknowns, d1.unknowns)
def test_modus(self): disc = distribution.Continuous([list(range(5)), [1, 1, 2, 5, 1]]) self.assertEqual(disc.modus(), 3)
def test_modus(self): d = data.Table("iris") petal_length = d.columns.petal_length disc = distribution.Continuous([list(range(5)), [1, 1, 2, 5, 1]]) self.assertEqual(disc.modus(), 3)