如何在GridSearchCV中为AdaBoostClassifier输入参数。错误:估计器的学习率参数无效

我试图使用GridSearchCV来调整我的模型参数。然而,我一直收到同样的错误,告诉我我传递的参数网格包含无效的参数。例如,它一直告诉我估计器的学习率参数无效.....。不仅是AdaBoost,其他我尝试使用GridSearchCV调整的模型也出现了这个问题,包括逻辑回归、线性支持向量机、决策树和随机森林。以下是我为AdaBoost分类器编写的代码以及我收到的错误:

clf_adaboost  = Pipeline([('vect', CountVectorizer()),('tfidf', TfidfTransformer()),('clf', AdaBoostClassifier())])clf = Pipeline([    ('vect', CountVectorizer()),    ('tfidf', TfidfTransformer()),    ('clf', clf_adaboost)])parameters = {    'n_estimators': [20, 50, 70, 100],    'learning_rate' : [0.0001, 0.001, 0.01, 0.1, 0.2, 0.3],    'n_estimators' : [100, 200, 300, 400, 500]    }kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=7)gs_clf = GridSearchCV(clf, parameters, cv=kfold, n_jobs=-1)gs_clf = gs_clf.fit(twenty_train.data, twenty_train.target)print("最佳得分准确率 = %.3f%%" %((gs_clf.best_score_)*100.0))print("最佳参数是:")print(gs_clf.best_params_)

当我运行这个时,我得到了以下错误:

oblib.externals.loky.process_executor._RemoteTraceback: """Traceback (most recent call last):  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/externals/loky/process_executor.py", line 418, in _process_worker    r = call_item()  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/externals/loky/process_executor.py", line 272, in __call__    return self.fn(*self.args, **self.kwargs)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 567, in __call__    return self.func(*args, **kwargs)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/parallel.py", line 225, in __call__    for func, args, kwargs in self.items]  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/parallel.py", line 225, in <listcomp>    for func, args, kwargs in self.items]  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/model_selection/_validation.py", line 503, in _fit_and_score    estimator.set_params(**parameters)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/pipeline.py", line 164, in set_params    self._set_params('steps', **kwargs)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/utils/metaestimators.py", line 50, in _set_params    super().set_params(**params)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/base.py", line 224, in set_params    (key, self))ValueError: 估计器的学习率参数无效 Pipeline(memory=None,         steps=[('vect',                 CountVectorizer(analyzer='word', binary=False,                                 decode_error='strict',                                 dtype=<class 'numpy.int64'>, encoding='utf-8',                                 input='content', lowercase=True, max_df=1.0,                                 max_features=None, min_df=1,                                 ngram_range=(1, 1), preprocessor=None,                                 stop_words=None, strip_accents=None,                                 token_pattern='(?u)\\b\\w\\w+\\b',                                 tokenizer=None, vocabulary=Non...                                                  preprocessor=None,                                                  stop_words=None,                                                  strip_accents=None,                                                  token_pattern='(?u)\\b\\w\\w+\\b',                                                  tokenizer=None,                                                  vocabulary=None)),                                 ('tfidf',                                  TfidfTransformer(norm='l2', smooth_idf=True,                                                   sublinear_tf=False,                                                   use_idf=True)),                                 ('clf',                                  AdaBoostClassifier(algorithm='SAMME.R',                                                     base_estimator=None,                                                     learning_rate=1.0,                                                     n_estimators=50,                                                     random_state=None))],                          verbose=False))],         verbose=False). 使用`estimator.get_params().keys()`检查可用参数列表。"""The above exception was the direct cause of the following exception:Traceback (most recent call last):  File "twenty_news.py", line 61, in <module>    gs_clf = gs_clf.fit(twenty_train.data, twenty_train.target)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 688, in fit    self._run_search(evaluate_candidates)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 1149, in _run_search    evaluate_candidates(ParameterGrid(self.param_grid))  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 667, in evaluate_candidates    cv.split(X, y, groups)))  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/parallel.py", line 934, in __call__    self.retrieve()  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/parallel.py", line 833, in retrieve    self._output.extend(job.get(timeout=self.timeout))  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 521, in wrap_future_result    return future.result(timeout=timeout)  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/concurrent/futures/_base.py", line 432, in result    return self.__get_result()  File "/Users/Furaha/.pyenv/versions/3.7.3/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result    raise self._exceptionValueError: 估计器的学习率参数无效 Pipeline(memory=None,         steps=[('vect',                 CountVectorizer(analyzer='word', binary=False,                                 decode_error='strict',                                 dtype=<class 'numpy.int64'>, encoding='utf-8',                                 input='content', lowercase=True, max_df=1.0,                                 max_features=None, min_df=1,                                 ngram_range=(1, 1), preprocessor=None,                                 stop_words=None, strip_accents=None,                                 token_pattern='(?u)\\b\\w\\w+\\b',                                 tokenizer=None, vocabulary=Non...                                                  preprocessor=None,                                                  stop_words=None,                                                  strip_accents=None,                                                  token_pattern='(?u)\\b\\w\\w+\\b',                                                  tokenizer=None,                                                  vocabulary=None)),                                 ('tfidf',                                  TfidfTransformer(norm='l2', smooth_idf=True,                                                   sublinear_tf=False,                                                   use_idf=True)),                                 ('clf',                                  AdaBoostClassifier(algorithm='SAMME.R',                                                     base_estimator=None,                                                     learning_rate=1.0,                                                     n_estimators=50,                                                     random_state=None))],                          verbose=False))],         verbose=False). 使用`estimator.get_params().keys()`检查可用参数列表。

我尝试的所有模型都收到了类似的错误,我猜测是我没有正确地编写参数网格中的参数。有人能帮我解决这个问题吗?


回答:

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注