예제 #1
0
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
예제 #2
0
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
예제 #3
0
    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)