在Binarizer中调整treshold到BernoulliNB()classifi

2024-04-25 02:01:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用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)

它给了我错误:

^{pr2}$

我不知道怎么了。在


Tags: 数据fromtestimportpipeline分类器trainparams
1条回答
网友
1楼 · 发布于 2024-04-25 02:01:51

是的,我的错。在评论中,我只是发现了'treshold'的拼写错误,很匆忙,没有注意估算部分。在

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

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

您不需要将estimator附加到上述部分。因此,在您的情况下,您需要使用以下方法:

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

访问管道的'binarizer'步骤的'threshold'参数。在

相关问题 更多 >