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.')
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
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.')
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)
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)