ValueError:估算函数RandomizedSearchCV

时间:2018-01-18 20:34:02

标签: python scikit-learn cross-validation

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

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

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 ..但我没有使用管道..

1 个答案:

答案 0 :(得分:0)

您需要为估算器进行设置:

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]}

应该工作!

相关问题