def test_num(self):
        x = Classifier(CONFIG)
        self.assertEqual(
            2, x.train([
                ('Y', Datum({'x': 1})),
                ('N', Datum({'x': -1})),
            ]))

        def _test_classify(x):
            y = x.classify([Datum({'x': 1}), Datum({'x': -1})])
            self.assertEqual(['Y', 'N'], [
                list(sorted(z, key=lambda x: x.score, reverse=True))[0].label
                for z in y
            ])
            self.assertEqual(x.get_labels(), {'N': 1, 'Y': 1})

        _test_classify(x)
        model = x.save_bytes()

        x.clear()
        self.assertEqual({}, x.get_labels())
        x.set_label('Y')
        x.set_label('N')
        self.assertEqual({'N': 0, 'Y': 0}, x.get_labels())
        x.delete_label(u'Y')
        self.assertEqual({'N': 0}, x.get_labels())

        x = Classifier(CONFIG)
        x.load_bytes(model)
        _test_classify(x)
        self.assertEqual(CONFIG, json.loads(x.get_config()))
    def test_num(self):
        x = Classifier(CONFIG)
        self.assertEqual(2, x.train([
            ('Y', Datum({'x': 1})),
            ('N', Datum({'x': -1})),
        ]))

        def _test_classify(x):
            y = x.classify([
                Datum({'x': 1}),
                Datum({'x': -1})
            ])
            self.assertEqual(['Y', 'N'], [list(sorted(
                z, key=lambda x:x.score, reverse=True))[0].label for z in y])
            self.assertEqual(x.get_labels(), {'N': 1, 'Y': 1})

        _test_classify(x)
        model = x.save_bytes()

        x.clear()
        self.assertEqual({}, x.get_labels())
        x.set_label('Y')
        x.set_label('N')
        self.assertEqual({'N': 0, 'Y': 0}, x.get_labels())
        x.delete_label(u'Y')
        self.assertEqual({'N': 0}, x.get_labels())

        x = Classifier(CONFIG)
        x.load_bytes(model)
        _test_classify(x)
        self.assertEqual(CONFIG, json.loads(x.get_config()))
    def test_num(self):
        x = Classifier(CONFIG)
        self.assertEqual(
            2, x.train([
                ('Y', Datum({'x': 1})),
                ('N', Datum({'x': -1})),
            ]))

        def _test_classify(x):
            y = x.classify([Datum({'x': 1}), Datum({'x': -1})])
            self.assertEqual(['Y', 'N'], [
                list(sorted(z, key=lambda x: x.score, reverse=True))[0].label
                for z in y
            ])
            self.assertEqual(x.get_labels(), {'N': 1, 'Y': 1})

        _test_classify(x)
        model = x.save_bytes()

        self.assertTrue(x.clear())
        self.assertEqual({}, x.get_labels())
        x.set_label('Y')
        x.set_label('N')
        self.assertEqual({'N': 0, 'Y': 0}, x.get_labels())
        x.delete_label(u'Y')
        self.assertEqual({'N': 0}, x.get_labels())

        x = Classifier(CONFIG)
        x.load_bytes(model)
        _test_classify(x)
        self.assertEqual(CONFIG, json.loads(x.get_config()))

        if sys.version_info[0] == 3:
            x = pickle.loads(pickle.dumps(x))
            _test_classify(x)
            self.assertEqual(CONFIG, json.loads(x.get_config()))

        st = x.get_status()
        self.assertTrue(isinstance(st, dict))
        self.assertEqual(len(st), 1)
        self.assertEqual(list(st.keys())[0], 'embedded')
        self.assertTrue(isinstance(st['embedded'], dict))