Я пытаюсь усовершенствовать отлично работающую модель Бернулли Наивного Байеса с пакетами.
Но когда я пытаюсь провести перекрестную проверку BaggingClassifier
, я получаю очень неожиданный ZeroDivisionError
, исходящий из parallel.py.
Я пытался изменить все известные мне параметры, перезагрузил python, но ничего не получалось.
Вот воспроизводимый пример с бинарно-модифицированным набором данных iris
:
#%% run
import numpy as np
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import BaggingClassifier
from sklearn.naive_bayes import BernoulliNB
from sklearn.datasets import load_iris
data = load_iris()
data.targetbin = (data.target!=0).astype("int")
param_grid2={'max_samples' : np.linspace(0.5,1.0,3),
'base_estimator__alpha':np.linspace(0.1,1,3),
'base_estimator__binarize':[*np.linspace(0.0,1,3)],
'base_estimator__fit_prior':[True,False]}
param_grid2={'max_samples' :[0.7]}
clf = GridSearchCV(
BaggingClassifier(
BernoulliNB(),
n_estimators = 10, max_features = 0.5),
param_grid2,
scoring = "accuracy",
verbose=-1)
clf.fit(data.data, data.targetbin)
А вот и трассировка стека моей ошибки:
[Параллельно (n_jobs = 1)]: использование Backend SequentialBackend с 1
одновременные работники. Traceback (последний вызов был последним):
Файл "", строка 33, в
clf.fit (data.data, data.targetbin)
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ model_selection_search.py",
линия 722, в форме
self._run_search (evaluate_candidates)
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ model_selection_search.py",
строка 1191, в _run_search
evaluate_candidates (ParameterGrid (self.param_grid))
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ model_selection_search.py",
строка 711, в параметрах оценки
cv.split (X, y, группы)))
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib \ parallel.py",
линия 917, вызов
если self.dispatch_one_batch (итератор):
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib \ parallel.py",
строка 759, в dispatch_one_batch
self._dispatch (задачи)
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib \ parallel.py",
строка 716, в _dispatch
job = self._backend.apply_async (пакетный, обратный вызов = cb)
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib_parallel_backends.py",
строка 184, в apply_async
Обратный вызов (результат)
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib \ parallel.py",
линия 306, вызов
self.parallel.print_progress ()
Файл
"C: \ Users \ Dan \ Anaconda3 \ Lib \ сайт-пакеты \ sklearn \ внешнеположенности \ joblib \ parallel.py",
строка 806, в print_progress
if (is_last_item или частота курсора%):
ZeroDivisionError: целочисленное деление или по модулю на ноль
Что я делаю не так?