2015-05-07 2 views
21

Я запускаю GridSearch CV для оптимизации параметров классификатора в scikit. Как только я закончу, я хотел бы знать, какие параметры были выбраны как лучшие.Как получить лучший оценщик на GridSearchCV (Random Forest Classifier Scikit)

Всякий раз, когда я это делаю, я получаю AttributeError: 'RandomForestClassifier' object has no attribute 'best_estimator_' и не могу сказать, почему, поскольку он кажется законным атрибутом на 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_ 

Урожайность:

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

ответ

45

Вы должны соответствовать данным, прежде чем вы можете получить наилучшее сочетание параметров.

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_ 
+0

Это сработало, спасибо! Любая идея о том, почему? (Я думал, что gridSearch найдет параметры, но я не смог бы даже вернуть параметры перед установкой) –

+9

Различные наборы данных будут иметь разные оптимизированные комбинации параметров, т. Е. Без данных, нет оптимальной комбинации параметров – Ryan

+0

Каков смысл передачи n_estimators для RandomForestClassifier, учитывая, что вы также передаете его в GridSearchCV в param_grid? – sergzach

 Смежные вопросы

  • Нет связанных вопросов^_^