Exemplo n.º 1
0
def LOF(dataset):
    data = get_table_content(dataset)
    model = LocalOutlierFactor(n_neighbors=4, contamination=0.1, novelty=True)
    model.fit(numpy.array(data)[:, 0:2])
    y = model._predict(numpy.array(data)[:, 0:2])  # 若样本点正常,返回1,不正常,返回-1
    print(y)
    pass
Exemplo n.º 2
0
Arquivo: views.py Projeto: cgno12/lb
def LOF(Data):
    model = LocalOutlierFactor(n_neighbors=10,
                               contamination='auto',
                               novelty=True)  #定义一个LOF模型,异常比例是10%
    model.fit(Data)
    z = model._predict(Data)  #若样本点正常,返回1,不正常,返回-1
    index = z == 1
    P = Data[index, :]  #剩余点
    P = np.array(list(set([tuple(t) for t in P])))
    D = np.array([z])
    return P, D
def lof_see(X, test_bi_pca, labels, min_samples):
    for mSample in min_samples:
        clf = LocalOutlierFactor(n_neighbors=mSample, contamination=0.1)
        clf_predict = LocalOutlierFactor(n_neighbors=mSample,
                                         contamination=0.1,
                                         novelty=True).fit(bi_df_pca_unique)
        test_labels = clf_predict._predict(test_bi_pca)
        test_labels[test_labels > -1] = 0
        print(mSample)
        print(data_utils.show_performance(labels, test_labels))
        print("Silhouette Coefficient: %0.3f" %
              metrics.silhouette_score(X, clf.fit_predict(X)))
        print("Calinski-Harabaz Index: %0.3f" %
              metrics.calinski_harabaz_score(X, clf.fit_predict(X)))
        print('--')
            return None
        feature_set.append(dsc)
        print("features extraction: %d/%d" % (i, len(image_set)))
        i += 1
    return np.asarray(feature_set)


if __name__ == "__main__":
    train, test, test_label, num_test_norm, num_test_anom = load_data()

    train = extract_feature(train)
    test = extract_feature(test)

    clf = LocalOutlierFactor(n_neighbors=10, leaf_size=50)
    clf.fit(train)
    pred_train = clf._predict(train)
    pred_test = clf._predict(test)
    print(pred_train)
    print(pred_test)

    tp, fp, tn, fn = 0., 0., 0., 0.
    for i in range(len(test)):
        if (test_label[i] == 1):
            if (pred_test[i] == -1):
                tp += 1
            elif (pred_test[i] == 1):
                fn += 1
        elif (test_label[i] == 0):
            if (pred_test[i] == -1):
                fp += 1
            elif (pred_test[i] == 1):
Exemplo n.º 5
0
    test = extract_feature(TEST_FOLDER)

    # train = train.astype('float32') / 255.
    # test = test.astype('float32') / 255.
    # train = train.reshape((len(train), np.prod(train.shape[1:])))
    # test = test.reshape((len(test), np.prod(test.shape[1:])))
    num_test_anom = len(test_label)
    train, test_norm, train_name, test_name_norm = train_test_split(
        train, train_name, test_size=0.2, random_state=30)
    num_test_norm = len(test_name_norm)
    test = np.concatenate((test, test_norm), axis=0)
    test_label = np.concatenate((test_label, np.zeros(len(test_norm))), axis=0)

    clf = LocalOutlierFactor(n_neighbors=20)
    clf.fit(train)
    pred_test = clf._predict(test)
    print(pred_test)

    tp, fp, tn, fn = 0., 0., 0., 0.
    for i in range(0, len(test) - len(test_norm)):
        if (pred_test[i] == -1):
            tp += 1
        elif (pred_test[i] == 1):
            fn += 1
    for i in range(len(test) - len(test_norm), len(test)):
        if (pred_test[i] == -1):
            fp += 1
        elif (pred_test[i] == 1):
            tn += 1

    print('\nPrecesion: %.3f' % (tp / (tp + fp)))