AttributeError: 'RandomizedSearchCV' object has no attribute 'grid_scores_'

5.3k views Asked by At

When I tried this code:

import sklearn_crfsuite
from sklearn.model_selection import RandomizedSearchCV

f1_scorer = make_scorer(metrics.flat_f1_score,
                    average='weighted', labels=labels)
params_space = {
 'c1': scipy.stats.expon(scale=0.5),
 'c2': scipy.stats.expon(scale=0.05),
}

crf = sklearn_crfsuite.CRF(
    algorithm='lbfgs',
    max_iterations=100,
    all_possible_transitions=True)

rs = RandomizedSearchCV(crf, params_space,
                    cv=3,
                    verbose=1,
                    n_jobs=-1,
                    n_iter=50,
                    scoring=f1_scorer)

rs.fit(X_train, y_train)

_x = [s.parameters['c1'] for s in rs.grid_scores_]
_y = [s.parameters['c2'] for s in rs.grid_scores_]
_c = [s.mean_validation_score for s in rs.grid_scores_]

I'm getting the error:

AttributeError: 'RandomizedSearchCV' object has no attribute 'grid_scores_'

sklearn-crfsuite version = 0.3.6

2

There are 2 answers

0
Wickkiey On BEST ANSWER

grid_scores_ is deprecated and cv_results_ is used now.

For more reference RandomizedSearchCV

0
YoungSheldon On

The implementation of cv_results_ is way different from grid_scores_

To extract right set of _x, _y and _c, below code should work

_x = [s['c1'] for s in rs.cv_results_['params']]
_y = [s['c2'] for s in rs.cv_results_['params']]
_c = [s for s in rs.cv_results_['mean_train_score']]