def _choose_classifier(job: Job): if job.type == JobTypes.UPDATE.value: classifier = _load_model(job.incremental_train) # TODO: check if this instruction still makes sense # are we updating a predictive_model with its own methods? assert classifier[0].__class__.__name__ == job.method else: method, config = get_method_config(job) config.pop('classification_method', None) print("Using method {} with config {}".format(method, config)) if method == ClassificationMethods.KNN.value: classifier = KNeighborsClassifier(**config) elif method == ClassificationMethods.RANDOM_FOREST.value: classifier = RandomForestClassifier(**config) elif method == ClassificationMethods.DECISION_TREE.value: classifier = DecisionTreeClassifier(**config) elif method == ClassificationMethods.XGBOOST.value: classifier = XGBClassifier(**config) elif method == ClassificationMethods.MULTINOMIAL_NAIVE_BAYES.value: classifier = MultinomialNB(**config) elif method == ClassificationMethods.ADAPTIVE_TREE.value: classifier = HAT(**config) elif method == ClassificationMethods.HOEFFDING_TREE.value: classifier = HoeffdingTree(**config) elif method == ClassificationMethods.SGDCLASSIFIER.value: classifier = SGDClassifier(**config) elif method == ClassificationMethods.PERCEPTRON.value: classifier = Perceptron(**config) elif method == ClassificationMethods.NN.value: config['encoding'] = job.encoding.value_encoding config['is_binary_classifier'] = _check_is_binary_classifier(job.labelling.type) classifier = NNClassifier(**config) else: raise ValueError("Unexpected classification method {}".format(method)) return classifier
def _choose_classifier(job: Job): method, config = get_method_config(job) config.pop('classification_method', None) logger.info("Using method {} with config {}".format(method, config)) if method == ClassificationMethods.KNN.value: classifier = KNeighborsClassifier(**config) elif method == ClassificationMethods.RANDOM_FOREST.value: classifier = RandomForestClassifier(**config) elif method == ClassificationMethods.DECISION_TREE.value: classifier = DecisionTreeClassifier(**config) elif method == ClassificationMethods.XGBOOST.value: classifier = XGBClassifier(**config) elif method == ClassificationMethods.MULTINOMIAL_NAIVE_BAYES.value: classifier = MultinomialNB(**config) elif method == ClassificationMethods.ADAPTIVE_TREE.value: classifier = HAT(**config) elif method == ClassificationMethods.HOEFFDING_TREE.value: classifier = HoeffdingTree(**config) elif method == ClassificationMethods.SGDCLASSIFIER.value: classifier = SGDClassifier(**config) elif method == ClassificationMethods.PERCEPTRON.value: classifier = Perceptron(**config) elif method == ClassificationMethods.NN.value: config['encoding'] = job.encoding.value_encoding config['is_binary_classifier'] = _check_is_binary_classifier( job.labelling.type) classifier = NNClassifier(**config) else: raise ValueError("Unexpected classification method {}".format(method)) return classifier
def test_nn_classifier_simple_index_multiclass_no_exceptions(self): encoding = create_test_encoding(value_encoding=ValueEncodings.SIMPLE_INDEX.value, prefix_length=2, padding=True) labelling = create_test_labelling(label_type=LabelTypes.NEXT_ACTIVITY.value) train_df = simple_index(self.train_log, labelling, encoding) test_df = simple_index(self.test_log, labelling, encoding) train_df, targets_df = self._drop_columns_and_split(train_df) targets_df = targets_df.values.ravel() test_df, _ = self._drop_columns_and_split(test_df) config = self._get_nn_default_config(binary=False) nn_classifier = NNClassifier(**config) with HidePrints(): nn_classifier.fit(train_df, targets_df) nn_classifier.predict(test_df) nn_classifier.predict_proba(test_df)