Cómo obtener el mejor Estimador en GridSearchCV (Random Forest Classifier Scikit)


Estoy ejecutando GridSearch CV para optimizar los parámetros de un clasificador en scikit. Una vez que haya terminado, me gustaría saber qué parámetros fueron elegidos como los mejores.

Cada vez que lo hago obtengo un AttributeError: 'RandomForestClassifier' object has no attribute 'best_estimator_', y no puedo decir por qué, ya que parece ser un atributo legítimo en la documentación .

from sklearn.grid_search import GridSearchCV

X = data[usable_columns]
y = data[target]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

rfc = RandomForestClassifier(n_jobs=-1,max_features= 'sqrt' ,n_estimators=50, oob_score = True) 

param_grid = {
    'n_estimators': [200, 700],
    'max_features': ['auto', 'sqrt', 'log2']
}

CV_rfc = GridSearchCV(estimator=rfc, param_grid=param_grid, cv= 5)

print '\n',CV_rfc.best_estimator_

Rinde:

`AttributeError: 'GridSearchCV' object has no attribute 'best_estimator_'
Author: sapo_cosmico, 0000-00-00

2 answers

Debe ajustar sus datos antes de poder obtener la mejor combinación de parámetros.

from sklearn.grid_search import GridSearchCV
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
# Build a classification task using 3 informative features
X, y = make_classification(n_samples=1000,
                           n_features=10,
                           n_informative=3,
                           n_redundant=0,
                           n_repeated=0,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)


rfc = RandomForestClassifier(n_jobs=-1,max_features= 'sqrt' ,n_estimators=50, oob_score = True) 

param_grid = { 
    'n_estimators': [200, 700],
    'max_features': ['auto', 'sqrt', 'log2']
}

CV_rfc = GridSearchCV(estimator=rfc, param_grid=param_grid, cv= 5)
CV_rfc.fit(X, y)
print CV_rfc.best_params_
 51
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-07 15:24:28

Solo para agregar un punto más para mantenerlo claro.

El documento dice lo siguiente:

Best_estimator_: estimador o dict:

Estimador que fue elegido por la búsqueda, es decir, estimador que dio la puntuación más alta (o la pérdida más pequeña si se especifica) en los datos de la izquierda.

Cuando se llama a la búsqueda de cuadrícula con varios parámetros, elige el que tiene la puntuación más alta en función del marcador dado func. Mejor estimador da la información de los parámetros que resultó en la puntuación más alta.

Por lo tanto, esto solo se puede llamar después de ajustar los datos.

 1
Author: rohithnama,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-24 20:50:47