Ejemplo n.º 1
0
    def __init__(self,
                 pool_classifiers=None,
                 k=7,
                 DFP=False,
                 with_IH=False,
                 safe_k=None,
                 IH_rate=0.30,
                 needs_proba=False,
                 random_state=None,
                 knn_classifier='knn',
                 DSEL_perc=0.5,
                 knne=False):

        self.pool_classifiers = pool_classifiers
        self.k = k
        self.DFP = DFP
        self.with_IH = with_IH
        self.safe_k = safe_k
        self.IH_rate = IH_rate
        self.needs_proba = needs_proba
        self.random_state = random_state
        self.knn_classifier = knn_classifier
        self.DSEL_perc = DSEL_perc
        self.knne = knne

        # Check optional dependency
        if knn_classifier == 'faiss' and not faiss_knn_wrapper.is_available():
            raise ImportError(
                'Using knn_classifier="faiss" requires that the FAISS library '
                'be installed.Please check the Installation Guide.')
Ejemplo n.º 2
0
 def _set_knn_type(self):
     if self.knn_classifier == 'faiss':
         if not faiss_knn_wrapper.is_available():
             raise ImportError(
                 'Using knn_classifier="faiss" requires that the FAISS '
                 'library be installed.Please check the Installation '
                 'Guide.')
         self.knn_type_ = faiss_knn_wrapper.FaissKNNClassifier
     else:
         self.knn_type_ = KNeighborsClassifier
Ejemplo n.º 3
0
    def _set_knn_type(self):

        if self.knn_classifier is None or self.knn_classifier in ['knn',
                                                                  'sklearn']:
            self.knn_type_ = KNeighborsClassifier

        elif self.knn_classifier == 'faiss':
            if not faiss_knn_wrapper.is_available():
                raise ImportError(
                    'Using knn_classifier="faiss" requires that the FAISS '
                    'library be installed.Please check the Installation '
                    'Guide.')
            self.knn_type_ = faiss_knn_wrapper.FaissKNNClassifier

        elif callable(self.knn_classifier):
            self.knn_type_ = self.knn_classifier
        else:
            raise ValueError('"knn_classifier" should be one of the following '
                             '["knn", "faiss", None] or an estimator class.')
Ejemplo n.º 4
0
    pool_classifiers, X_dsel, y_dsel, X_test, y_test = setup_classifiers()

    kne = KNORAE(pool_classifiers)

    params = {'k': [1, 3, 5, 7]}
    grid = GridSearchCV(kne, params)

    grid.fit(X_dsel, y_dsel)

    grid.best_estimator_.score(X_test, y_test)


knn_methods = [None]

if faiss_knn_wrapper.is_available():
    knn_methods.append(faiss_knn_wrapper.FaissKNNClassifier)
else:
    warnings.warn("Not testing FAISS for KNN")


def test_label_encoder_integration_list_classifiers():
    rng = np.random.RandomState(123456)
    X_dsel, X_test, X_train, y_dsel, y_test, y_train = load_dataset(
        encode_labels=['no', 'yes'], rng=rng)

    pool_classifiers = [LogisticRegression(), SVC(probability=True)]
    [clf.fit(X_train, y_train) for clf in pool_classifiers]

    knorau = KNORAU(pool_classifiers)
    knorau.fit(X_dsel, y_dsel)
Ejemplo n.º 5
0
import pytest
from sklearn.neighbors import KNeighborsClassifier
from deslib.tests.examples_test import *
from deslib.tests.test_des_integration import load_dataset
from deslib.util import faiss_knn_wrapper


@pytest.mark.skipif(not faiss_knn_wrapper.is_available(),
                    reason="requires the faiss library")
def test_faiss_predict():
    rng = np.random.RandomState(123456)
    _, X_test, X_train, _, _, y_train = load_dataset(None, rng)
    k = 7
    X_train = X_train.astype(np.float32)
    X_test = X_test.astype(np.float32)
    f_knn_test = faiss_knn_wrapper.FaissKNNClassifier(n_neighbors=k)
    f_knn_test.fit(X_train, y_train)
    f_knn_preds = f_knn_test.predict(X_test)

    knn_test = KNeighborsClassifier(n_neighbors=k)
    knn_test.fit(X_train, y_train)
    knn_preds = knn_test.predict(X_test)

    assert ((f_knn_preds - knn_preds).sum() == 0)