我想使用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().
我不知道怎么了。
答案 0 :(得分:0)
是的,我不好。在评论中,我只是发现了'treshold'
的拼写错误,并且急忙不去关注估计量部分。
对于管道,可以使用两个部分来访问参数:
binarizer
或classifier
之类的步骤名称您不需要在上述部分后面附加estimator
。因此,在您的情况下,您将需要使用以下内容:
params = {'binarizer__threshold': np.logspace(0, 5, 20)}
进入管道'threshold'
步骤的'binarizer'
参数。