【问题标题】:ValueError: Invalid parameter for estimator RandomizedSearchCVValueError:估计器 RandomizedSearchCV 的参数无效
【发布时间】:2018-06-28 00:43:58
【问题描述】:

我正在使用 Scikit-learn 版本 0.18.1 python 2.7.13 中的 RandomizedSearchCV 调整 SGD 分类器。我收到此错误,不知道出了什么问题!

(请注意,当我尝试随机森林时,我也遇到了类似的错误。我使用相同的代码(但 param_grid 不同)尝试了 SVM 和 LGBM 分类器,但没有收到错误)

ValueError: Invalid parameter alpha for estimator RandomizedSearchCV. Check the list of available parameters with `estimator.get_params().keys()`.

分类器调优代码:

from sklearn.metrics.classification import precision_recall_fscore_support
import sklearn

def clf_score(clf_model,param_grid,model_name=None):
    from sklearn.metrics import f1_scorer
    from sklearn.metrics import make_scorer
    def avg_score(xx,stance_train):
        prec, recall, f, support = precision_recall_fscore_support(xx, stance_train, labels=[2, 1, 0],
                                                               beta=1)
        faverage=(f[0]+f[1])*0.5
        return faverage
    f1_scorer = make_scorer(avg_score,greater_is_better=True)
    clf_model=sklearn.model_selection.RandomizedSearchCV(verbose=3,estimator=clf_model, param_distributions=param_grid, cv=CV,scoring=f1_scorer,n_iter=20,random_state=99)
    clf_model.fit(X_train, stance_train)
    test_predict = clf_model.predict(X_test)
    return test_predict


SGD = sklearn.linear_model.SGDClassifier(random_state=99,n_jobs=-1)
param_grid = {
                'learning_rate':['constant','optimal','invscaling'],
                'eta0':[0.0,0.01,0.1,0.3,0.5,0.7],
                'alpha':[0.0001,0.001,0.01,0.1]}
test_prediction= clf_score(SGD, param_grid)

这是输出和错误的详细信息

Fitting 5 folds for each of 20 candidates, totalling 100 fits
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
[CV]  alpha=0.001, learning_rate=constant, eta0=0.1, score=0.210678, total=   1.4s
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    1.5s remaining:    0.0s
D:\python27\lib\site-packages\sklearn\metrics\classification.py:1113: UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.
'precision', 'predicted', average, warn_for)
[CV]  alpha=0.001, learning_rate=constant, eta0=0.1, score=0.039474, total=   1.7s
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
[Parallel(n_jobs=1)]: Done   2 out of   2 | elapsed:    3.4s remaining:    0.0s
[CV]  alpha=0.001, learning_rate=constant, eta0=0.1, score=0.356784, total=   1.3s
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
[CV]  alpha=0.001, learning_rate=constant, eta0=0.1, score=0.351759, total=   1.3s
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
[CV]  alpha=0.001, learning_rate=constant, eta0=0.1, score=0.370766, total=   1.3s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.1 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.1, score=0.353070, total=   1.3s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.1 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.1, score=0.102564, total=   1.2s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.1 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.1, score=0.394590, total=   1.2s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.1 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.1, score=0.344262, total=   1.2s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.1 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.1, score=0.331461, total=   1.3s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.01 ..................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.01, score=0.277067, total=   1.3s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.01 ..................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.01, score=0.040541, total=   1.3s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.01 ..................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.01, score=0.497475, total=   1.2s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.01 ..................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.01, score=0.351759, total=   1.2s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.01 ..................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.01, score=0.343434, total=   1.3s
[CV] alpha=0.0001, learning_rate=invscaling, eta0=0.5 ................
[CV]  alpha=0.0001, learning_rate=invscaling, eta0=0.5, score=0.343452, total=   1.3s
[CV] alpha=0.0001, learning_rate=invscaling, eta0=0.5 ................
[CV]  alpha=0.0001, learning_rate=invscaling, eta0=0.5, score=0.126623, total=   1.3s
[CV] alpha=0.0001, learning_rate=invscaling, eta0=0.5 ................
[CV]  alpha=0.0001, learning_rate=invscaling, eta0=0.5, score=0.429521, total=   1.2s
[CV] alpha=0.0001, learning_rate=invscaling, eta0=0.5 ................
[CV]  alpha=0.0001, learning_rate=invscaling, eta0=0.5, score=0.342857, total=   1.3s
[CV] alpha=0.0001, learning_rate=invscaling, eta0=0.5 ................
[CV]  alpha=0.0001, learning_rate=invscaling, eta0=0.5, score=0.314815, total=   1.3s
[CV] alpha=0.01, learning_rate=constant, eta0=0.7 ....................
[CV]  alpha=0.01, learning_rate=constant, eta0=0.7, score=0.159236, total=   1.2s
[CV] alpha=0.01, learning_rate=constant, eta0=0.7 ....................
[CV]  alpha=0.01, learning_rate=constant, eta0=0.7, score=0.000000, total=   1.3s
[CV] alpha=0.01, learning_rate=constant, eta0=0.7 ....................
[CV]  alpha=0.01, learning_rate=constant, eta0=0.7, score=0.353234, total=   1.3s
[CV] alpha=0.01, learning_rate=constant, eta0=0.7 ....................
[CV]  alpha=0.01, learning_rate=constant, eta0=0.7, score=0.353234, total=   1.3s
[CV] alpha=0.01, learning_rate=constant, eta0=0.7 ....................
[CV]  alpha=0.01, learning_rate=constant, eta0=0.7, score=0.353234, total=   1.4s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.3 ...................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.3, score=0.277067, total=   1.3s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.3 ...................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.3, score=0.040541, total=   1.2s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.3 ...................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.3, score=0.497475, total=   1.3s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.3 ...................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.3, score=0.351759, total=   1.2s
[CV] alpha=0.0001, learning_rate=optimal, eta0=0.3 ...................
[CV]  alpha=0.0001, learning_rate=optimal, eta0=0.3, score=0.343434, total=   1.2s
[CV] alpha=0.001, learning_rate=optimal, eta0=0.3 ....................
[CV]  alpha=0.001, learning_rate=optimal, eta0=0.3, score=0.277067, total=   1.2s
[CV] alpha=0.001, learning_rate=optimal, eta0=0.3 ....................
[CV]  alpha=0.001, learning_rate=optimal, eta0=0.3, score=0.040541, total=   1.3s
[CV] alpha=0.001, learning_rate=optimal, eta0=0.3 ....................
[CV]  alpha=0.001, learning_rate=optimal, eta0=0.3, score=0.497475, total=   1.2s
[CV] alpha=0.001, learning_rate=optimal, eta0=0.3 ....................
[CV]  alpha=0.001, learning_rate=optimal, eta0=0.3, score=0.351759, total=   1.2s
[CV] alpha=0.001, learning_rate=optimal, eta0=0.3 ....................
[CV]  alpha=0.001, learning_rate=optimal, eta0=0.3, score=0.343434, total=   1.2s
[CV] alpha=0.1, learning_rate=constant, eta0=0.1 .....................
[CV]  alpha=0.1, learning_rate=constant, eta0=0.1, score=0.159236, total=   1.2s
[CV] alpha=0.1, learning_rate=constant, eta0=0.1 .....................
[CV]  alpha=0.1, learning_rate=constant, eta0=0.1, score=0.000000, total=   1.3s
[CV] alpha=0.1, learning_rate=constant, eta0=0.1 .....................
[CV]  alpha=0.1, learning_rate=constant, eta0=0.1, score=0.353234, total=   1.2s
[CV] alpha=0.1, learning_rate=constant, eta0=0.1 .....................
[CV]  alpha=0.1, learning_rate=constant, eta0=0.1, score=0.353234, total=   1.2s
[CV] alpha=0.1, learning_rate=constant, eta0=0.1 .....................
[CV]  alpha=0.1, learning_rate=constant, eta0=0.1, score=0.353234, total=   1.3s
[CV] alpha=0.0001, learning_rate=constant, eta0=0.1 ..................
[CV]  alpha=0.0001, learning_rate=constant, eta0=0.1, score=0.243056, total=   1.2s
[CV] alpha=0.0001, learning_rate=constant, eta0=0.1 ..................
[CV]  alpha=0.0001, learning_rate=constant, eta0=0.1, score=0.372145, total=   1.3s
[CV] alpha=0.0001, learning_rate=constant, eta0=0.1 ..................
[CV]  alpha=0.0001, learning_rate=constant, eta0=0.1, score=0.368362, total=   1.2s
[CV] alpha=0.0001, learning_rate=constant, eta0=0.1 ..................
[CV]  alpha=0.0001, learning_rate=constant, eta0=0.1, score=0.351759, total=   1.2s
[CV] alpha=0.0001, learning_rate=constant, eta0=0.1 ..................
[CV]  alpha=0.0001, learning_rate=constant, eta0=0.1, score=0.346734, total=   1.3s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.3 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.3, score=0.327743, total=   1.2s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.3 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.3, score=0.063291, total=   1.2s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.3 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.3, score=0.407876, total=   1.3s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.3 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.3, score=0.345745, total=   1.3s
[CV] alpha=0.01, learning_rate=invscaling, eta0=0.3 ..................
[CV]  alpha=0.01, learning_rate=invscaling, eta0=0.3, score=0.341837, total=   1.2s
[CV] alpha=0.1, learning_rate=constant, eta0=0.0 .....................
Fitting 5 folds for each of 20 candidates, totalling 100 fits
[CV] alpha=0.001, learning_rate=constant, eta0=0.1 ...................
Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.3\helpers\pydev\pydevd.py", line 1585, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.3\helpers\pydev\pydevd.py", line 1015, in run
pydev_imports.execfile(file, globals, locals)  # execute the script
  File "D:/Mycode-newtrials - Copy/stance_detection -norelieff-lgbm - randomizedsearch.py", line 1608, in <module>
favg_sgd,cv_sgd,tuned_sgd=feature_selection_class(Relieff_neighbors,Relieff_features,LDA_topics,LDA_passes,w2v_features,w2v_min_wc,w2v_ctxt,down_sampling,skip_cbow,stance_train,stance_test,clf_to_use,N=2000,method=METHOD)
  File "D:/Mycode-newtrials - Copy/stance_detection -norelieff-lgbm - randomizedsearch.py", line 1507, in feature_selection_class
favg_sgd,cv_sgd,tuned_sgd = computescores(Relieff_neighbors, Relieff_features, LDA_topics, LDA_passes, w2v_features, w2v_min_wc, w2v_ctxt,down_sampling, skip_cbow, tweets_test, tweets_train, TARGET, allfeatures, favor_words, against_words,favor_tags,against_tags, clf_to_use, N, method)
  File "D:/Mycode-newtrials - Copy/stance_detection -norelieff-lgbm - randomizedsearch.py", line 914, in computescores
favg_gnb, cv_gnb, tuned_gnb = clf_score(SGD, param_grid)
  File "D:/Mycode-newtrials - Copy/stance_detection -norelieff-lgbm - randomizedsearch.py", line 802, in clf_score
clf_model.fit(X_train, stance_train)
  File "D:\python27\lib\site-packages\sklearn\model_selection\_search.py", line 1190, in fit
return self._fit(X, y, groups, sampled_params)
  File "D:\python27\lib\site-packages\sklearn\model_selection\_search.py", line 564, in _fit
for parameters in parameter_iterable
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 758, in __call__
while self.dispatch_one_batch(iterator):
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 608, in dispatch_one_batch
self._dispatch(tasks)
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 571, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\_parallel_backends.py", line 109, in apply_async
result = ImmediateResult(func)
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\_parallel_backends.py", line 326, in __init__
self.results = batch()
  File "D:\python27\lib\site-packages\sklearn\externals\joblib\parallel.py", line 131, in __call__
return [func(*args, **kwargs) for func, args, kwargs in self.items]
  File "D:\python27\lib\site-packages\sklearn\model_selection\_validation.py", line 227, in _fit_and_score
estimator.set_params(**parameters)
  File "D:\python27\lib\site-packages\sklearn\base.py", line 291, in set_params
(key, self.__class__.__name__))
ValueError: Invalid parameter alpha for estimator RandomizedSearchCV. Check the list of available parameters with `estimator.get_params().keys()`.

注意: 我搜索并发现有些人有类似的错误,但问题出现了,因为他们使用管道并且没有将分类器名称附加到 param_grid ..但我没有使用管道..

【问题讨论】:

  • 我尝试使用 python 3.5,它给了我参数“eta0”值必须大于零的错误。所以我从 param_grid 中删除了 0.0,它运行良好。但是,此参数的默认值为 0.0! .
  • 但是对于随机森林分类器,python 2.7 给我一个错误(类似于我发布的错误).. 但是,我尝试使用 python 3.5,它没有给我一个错误,它运行良好无需更改 param_grid 中的任何内容!
  • eta0 的默认值为 0.0,因为默认学习率“最佳”未使用它。当你改变学习率时,你必须改变eta0。
  • 您指定的参数适用于 SGDClassifier,因此它们不适用于 RandomForestClassifier,因此会出现错误。请在 python2 和 3 中发布完整的代码和两个错误。

标签: python scikit-learn cross-validation


【解决方案1】:

您需要为估算器的部分设置它:

param_grid = {
                'sgdclassifier__learning_rate':['constant','optimal','invscaling'],
                'sgdclassifier__eta0':[0.0,0.01,0.1,0.3,0.5,0.7],
                'sgdclassifier__alpha':[0.0001,0.001,0.01,0.1]}

应该可以!

【讨论】:

    猜你喜欢
    • 2021-08-13
    • 2020-05-19
    • 2016-12-20
    • 2021-02-26
    • 2020-08-11
    • 2021-05-27
    • 2020-07-12
    • 2016-01-03
    • 2020-02-22
    相关资源
    最近更新 更多