Пример #1
0
    def _combine(self, scores):
        """
        Wrapping for PyOD the ensembler.
        Args:
            scores (np.float array of shape (num_anomaly_detectors, )) List of scores from multiple anomaly detectors.

        Returns:
            float: Resulting anomaly score.
        """
        return maximization(scores)
Пример #2
0
def define_combination_methods(normalizer_name, k, norm_results):
    combination_methods = {
        normalizer_name + ' Average_' + str(k): average(norm_results),
        normalizer_name + ' Maximization_' + str(k):
        maximization(norm_results),
        normalizer_name + ' Aom_' + str(k): aom(norm_results, int(k / 2)),
        normalizer_name + ' Moa_' + str(k): moa(norm_results, int(k / 2))
    }

    return combination_methods
Пример #3
0
    def __train_classifiers(self):
        scaler = MinMaxScaler(feature_range=(0, 1))
        X = scaler.fit_transform(self.df.copy())
        classifiers = self.__load_classifiers()
        scores = np.zeros([X.shape[0], len(classifiers)])
        for i, (clf_name, clf) in enumerate(classifiers.items()):
            try:
                clf.fit(X)
                scores[:, i] = clf.decision_scores_
            except Exception as e:
                print("Failed for ", clf_name)
                print("because of ", e)

        standard_scores = standardizer(scores)
        combined_scores = maximization(standard_scores)
        return combined_scores
Пример #4
0
    train_scores = np.zeros([X_train.shape[0], n_clf])
    test_scores = np.zeros([X_test.shape[0], n_clf])

    for i in range(n_clf):
        k = k_list[i]

        clf = KNN(n_neighbors=k, method='largest')
        clf.fit(X_train_norm)

        train_scores[:, i] = clf.decision_scores_
        test_scores[:, i] = clf.decision_function(X_test_norm)

    # decision scores have to be normalized before combination
    train_scores_norm, test_scores_norm = standardizer(train_scores,
                                                       test_scores)
    # combination by average
    y_by_average = average(test_scores_norm)
    evaluate_print('Combination by Average', y_test, y_by_average)

    # combination by max
    y_by_maximization = maximization(test_scores_norm)
    evaluate_print('Combination by Maximization', y_test, y_by_maximization)

    # combination by aom
    y_by_aom = aom(test_scores_norm, n_buckets=5)
    evaluate_print('Combination by AOM', y_test, y_by_aom)

    # combination by moa
    y_by_moa = moa(test_scores_norm, n_buckets=5)
    evaluate_print('Combination by MOA', y_test, y_by_moa)
Пример #5
0
 def test_maximization(self):
     score = maximization(self.scores)
     assert_allclose(score, np.array([2, 4, 6]))
Пример #6
0
    print('Combining {n_clf} kNN detectors'.format(n_clf=n_clf))

    for i in range(n_clf):
        k = k_list[i]

        clf = KNN(n_neighbors=k, method='largest')
        clf.fit(X_train_norm)

        train_scores[:, i] = clf.decision_scores_
        test_scores[:, i] = clf.decision_function(X_test_norm)

    # Decision scores have to be normalized before combination
    train_scores_norm, test_scores_norm = standardizer(train_scores,
                                                       test_scores)
    # Combination by average
    y_by_average = average(test_scores_norm)
    evaluate_print('Combination by Average', y_test, y_by_average)

    # Combination by max
    y_by_maximization = maximization(test_scores_norm)
    evaluate_print('Combination by Maximization', y_test, y_by_maximization)

    # Combination by aom
    y_by_aom = aom(test_scores_norm, n_buckets=5)
    evaluate_print('Combination by AOM', y_test, y_by_aom)

    # Combination by moa
    y_by_moa = moa(test_scores_norm, n_buckets=5)
    evaluate_print('Combination by MOA', y_test, y_by_moa)
Пример #7
0
 def test_maximization(self):
     score = maximization(self.scores)
     assert_allclose(score, np.array([2, 4, 6]))