Как использовать KNeighborsClassifier в BaggingClassifier и как решить «KNN не поддерживает выборку весов» - PullRequest
0 голосов
/ 01 марта 2020

Я новичок в Sklearn и пытаюсь объединить KNN, Decision Tree, SVM и Gaussian NB для BaggingClassifier.

Часть моего кода выглядит так:

best_KNN = KNeighborsClassifier(n_neighbors=5, p=1)
best_KNN.fit(X_train, y_train)

majority_voting = VotingClassifier(estimators=[('KNN', best_KNN), ('DT', best_DT), ('SVM', best_SVM), ('gaussian', gaussian_NB)], voting='hard')
majority_voting.fit(X_train, y_train)

bagging = BaggingClassifier(base_estimator=majority_voting)
bagging.fit(X_train, y_train)

Но это приводит к ошибке:

TypeError: Базовая оценка KNeighborsClassifier не поддерживает веса выборки.

Часть "упаковки" работала нормально, если я удаляю KNN. У кого-нибудь есть идея решить эту проблему? Спасибо за ваше время.

1 Ответ

0 голосов
/ 01 марта 2020

В BaggingClassifier вы можете использовать только базовые оценки, которые поддерживают выборочные веса, потому что он опирается на метод Score , который принимает sample_weight параметр.

Вы можете перечислить все доступные классификаторы как:

import inspect 
from sklearn.utils.testing import all_estimators 
for name, clf in all_estimators(type_filter='classifier'): 
    if 'sample_weight' in inspect.getargspec(clf.fit)[0]: 
        print(name) 
...