def test_leave_discrete(self): s = [0] * 50 + [1] * 50 X1 = np.array(s).reshape((100, 1)) X2 = np.arange(100).reshape((100, 1)) X3 = np.ones((100, 1)) X = np.hstack([X1, X2, X3]) domain = data.Domain([ data.DiscreteVariable("a", values="MF"), data.ContinuousVariable("b"), data.DiscreteVariable("c", values="AB") ], data.ContinuousVariable("d")) table = data.Table(domain, X, X1) dom = discretize.DomainDiscretizer(table) self.assertIs(dom[0], table.domain[0]) self.assertEqual(dom[1].compute_value.points, [24.5, 49.5, 74.5]) self.assertIs(dom[2], table.domain[2]) self.assertIs(dom.class_var, table.domain.class_var) domain = data.Domain([ data.DiscreteVariable("a", values="MF"), data.ContinuousVariable("b"), data.DiscreteVariable("c", values="AB") ], data.DiscreteVariable("d")) table = data.Table(domain, X, X1) dom = discretize.DomainDiscretizer(table) self.assertIs(dom[0], table.domain[0]) self.assertEqual(dom[1].compute_value.points, [24.5, 49.5, 74.5]) self.assertIs(dom[2], table.domain[2]) self.assertIs(dom.class_var, table.domain.class_var)
def test_method(self): dom = discretize.DomainDiscretizer(self.table_class) self.assertEqual(len(dom[1].values), 4) dom = discretize.DomainDiscretizer(self.table_class, method=discretize.EqualWidth(n=2)) self.assertEqual(len(dom[1].values), 2)
def test_discretize_class(self): dom = discretize.DomainDiscretizer(self.table_class) self.assertIs(dom.class_var, self.table_class.domain.class_var) dom = discretize.DomainDiscretizer(self.table_class, discretize_class=True) self.assertIs(dom.class_var, self.table_class.domain.class_var)
def test_fixed(self): dom = discretize.DomainDiscretizer(self.table_no_class, method=discretize.EqualWidth(n=2), fixed={"Feature 2": [1, 11]}) self.assertEqual(len(dom.attributes), 2) self.assertEqual(dom[0].compute_value.points, [0.5]) self.assertEqual(dom[1].compute_value.points, [6])
def test_discretize_exclude_constant(self): dom = discretize.DomainDiscretizer(self.table_no_class) self.assertEqual(len(dom.attributes), 2) self.assertEqual(dom[0].compute_value.points, [0.5]) self.assertEqual(dom[1].compute_value.points, [24.5, 49.5, 74.5]) dom = discretize.DomainDiscretizer(self.table_no_class, clean=False) self.assertEqual(len(dom.attributes), 3) self.assertEqual(dom[0].compute_value.points, [0.5]) self.assertEqual(dom[1].compute_value.points, [24.5, 49.5, 74.5]) self.assertEqual(dom[2].compute_value.points, []) dom = discretize.DomainDiscretizer(self.table_class) self.assertEqual(len(dom.attributes), 2) self.assertEqual(dom[0].compute_value.points, [0.5]) self.assertEqual(dom[1].compute_value.points, [24.5, 49.5, 74.5])
def test_remove_mapping_after_compute_value(self): housing = Table("housing") method = discretize.EqualFreq(n=3) discretizer = discretize.DomainDiscretizer(discretize_class=True, method=method) domain = discretizer(housing) data = housing.transform(domain) val12 = np.nonzero(data.Y > 0)[0] data = data[val12] remover = Remove(class_flags=Remove.RemoveUnusedValues) cleaned = remover(data) np.testing.assert_equal(cleaned.Y, data.Y - 1)
def test_purge_discretized(self): housing = Table("housing") method = discretize.EqualFreq(n=3) discretizer = discretize.DomainDiscretizer(discretize_class=True, method=method) domain = discretizer(housing) data = housing.transform(domain) widget = self.widget_with_context(domain, [["MEDV", 101, 2, (2, 3)]]) widget.purge_classes = True self.send_signal(widget.Inputs.data, data) out = self.get_output(widget.Outputs.matching_data) expected = data.Y[(data.Y == 1) + (data.Y == 2)] expected = (expected == 2).astype(float) np.testing.assert_equal(out.Y, expected)