Binarizer中的调优阈值到BernoulliNB()分类器

时间:2018-11-28 08:04:28

标签: python scikit-learn classification naivebayes

我想使用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 :(得分:0)

是的,我不好。在评论中,我只是发现了'treshold'的拼写错误,并且急忙不去关注估计量部分。

对于管道,可以使用两个部分来访问参数:

  1. 此处binarizerclassifier之类的步骤名称
  2. 步骤1中该特定名称的实际参数名称。

您不需要在上述部分后面附加estimator。因此,在您的情况下,您将需要使用以下内容:

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

进入管道'threshold'步骤的'binarizer'参数。