def __init__(self, **config): # Validate options are present for option in _configuration_options: if option not in config: raise ValueError("Missing configuration " "option {!r}".format(option)) # Feature extraction sparse_features = parse_features(config["sparse_features"]) densifier = make_pipeline(Vectorizer(sparse_features, sparse=True), ClassifierAsFeature()) dense_features = parse_features(config["dense_features"]) vectorization = make_union(densifier, Vectorizer(dense_features, sparse=False)) # Classifier try: classifier = _valid_classifiers[config["classifier"]] except KeyError: raise ValueError("Unknown classification algorithm " "{!r}".format(config["classifier"])) classifier = classifier(**config["classifier_args"]) self.pipeline = make_pipeline(vectorization, StandardScaler()) self.classifier = classifier
def test_rule_wrapper_returns_int(self): with mock.patch("importlib.import_module") as mock_import: mocked_module = MockedModule() mock_import.return_value = mocked_module evidence = _e("test") fs = parse_features(["app.rules.custom_rule_feature"]) self.assertEqual(fs[0](evidence), 1) fs = parse_features(["app.rules.custom_only_match_dot"]) self.assertEqual(fs[0](evidence), 0) fs = parse_features(["app.rules.custom_negative_rule_feature"]) self.assertEqual(fs[0](evidence), 1) fs = parse_features(["app.rules.custom_negative_only_match_dot"]) self.assertEqual(fs[0](evidence), 0)
def test_parse_custom_rule_feature(self): with mock.patch("importlib.import_module") as mock_import: with mock.patch.object(features, "rule_wrapper") as mock_rule_wrapper: mocked_module = MockedModule() mock_import.return_value = mocked_module fs = parse_features(["app.rules.custom_rule_feature"]) mock_import.assert_called_with("app.rules") self.assertEqual(len(fs), 1) self.assertTrue(mock_rule_wrapper.called)
def test_parse_custom_feature(self): with mock.patch("importlib.import_module") as mock_import: mocked_module = MockedModule() mock_import.return_value = mocked_module fs = parse_features(["app.module.custom_feature"]) mock_import.assert_called_with("app.module") self.assertEqual(len(fs), 1) self.assertEqual(fs[0](), "custom feature")
def test_invalid_custom_feature(self): with self.assertRaises(KeyError): parse_features(["does.not.exists"])