web-dev-qa-db-fra.com

Comment obtenir Best Estimator sur GridSearchCV (Randik Forest Classifier Scikit)

J'utilise GridSearch CV pour optimiser les paramètres d'un classificateur dans scikit. Une fois que j'ai terminé, j'aimerais savoir quels paramètres ont été choisis comme étant les meilleurs.

Chaque fois que je le fais, je reçois un AttributeError: 'RandomForestClassifier' object has no attribute 'best_estimator_', et je ne peux pas dire pourquoi, car cela semble être un attribut légitime sur documentation

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_

Rendements: 

`AttributeError: 'GridSearchCV' object has no attribute 'best_estimator_'
28
sapo_cosmico

Vous devez adapter vos données avant de pouvoir obtenir la meilleure combinaison de paramètres.

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_
55
Ryan

Juste pour ajouter un point de plus pour le garder clair. 

Le document dit ceci:

best_estimator_: estimateur ou dict: 

Estimateur choisi par la recherche, c’est-à-dire l’estimateur qui a attribué le score le plus élevé (ou la plus petite perte, le cas échéant) aux données omises. 

Lorsque la recherche dans la grille est appelée avec différents paramètres, elle choisit celle qui obtient le score le plus élevé en fonction de la fonction du marqueur donnée. Le meilleur estimateur donne l’information sur les paramètres qui ont donné le score le plus élevé. 

Par conséquent, ceci ne peut être appelé qu'après ajustement des données.

1
rohithnama