我试图使用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()`检查可用参数列表。
我尝试的所有模型都收到了类似的错误,我猜测是我没有正确地编写参数网格中的参数。有人能帮我解决这个问题吗?
回答: