Порог настройки в Бинаризаторе к классификатору БернуллиNB () - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу использовать классификатор BernoulliNB (), и мои данные не будут преобразованы в двоичную форму.Поэтому я хочу выбрать лучший порог бинаризации с помощью GridsearchCV ().Мой код выглядит так:

from sklearn.pipeline import Pipeline
from sklearn.naive_bayes import BernoulliNB
from sklearn.preprocessing import Binarizer

pipeline = Pipeline([('binarizer', Binarizer()), ('classifier', BernoulliNB())])
params = {'estimator__binarizer__threshold': np.logspace(0, 5, 20)}

clf = GridSearchCV(pipeline, param_grid=params, cv=5, refit=True)
clf.fit(X_train,y_train)
clf.best_estimator_.score(X_test, y_test)

Это дает мне ошибку:

ValueError: Check the list of available parameters with estimator.get_params().keys().

Я не знаю, что не так.

1 Ответ

0 голосов
/ 29 ноября 2018

Да, мой плохой.В комментарии я только что заметил орфографическую ошибку 'treshold' и в спешке не обратил внимания на часть оценки.

Для конвейера доступ к параметрам можно получить с помощью двух частей:

  1. Имя шагов, таких как binarizer или classifier здесь
  2. Фактическое имя параметра для этого конкретного имени из шага 1.

Вам не нужнодобавить estimator к вышеуказанным частям.Поэтому в вашем случае вам нужно будет использовать следующее:

params = {'binarizer__threshold': np.logspace(0, 5, 20)}

, чтобы получить доступ к параметру 'threshold' шага конвейера 'binarizer'.

...