我正在尝试使用装袋改进完美工作的伯努利朴素贝叶斯模型。

但是当我尝试交叉验证 BaggingClassifier 时,我得到了一个来自 parallel.py 的非常意想不到的 ZeroDivisionError

我试图更改我知道的所有参数,重新启动 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)

这是我的错误的堆栈跟踪:



我究竟做错了什么?

最佳答案

我尝试调试 lib,发现 self.verbosesklearn/externals/joblib/parallel.py-1 ,但默认情况下它应该至少是 0 。所以我认为这是一个错误。

关于python - 将 sklearn 的 BaggingClassifier 与 GridSearchCV 一起使用时出现 ZeroDivisionError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55981273/

10-12 05:38