2014-11-20 2 views
1

Использование scikit учиться, я подхожу классификатор с помощью сетки Поиск, как это:Как повторно наиболее подходят классификатор в sklearn

from sklearn.svm import SVC 
param_grid = { 
    'C': [1e-2, 0.1, 1.0], 
    'gamma': [1e-4, 1e-3, 1e-2], 
    'class_weight': ['auto'] 
} 

clf = SVC() 
gs = grid_search.GridSearchCV(clf, param_grid, cv=3, n_jobs=12) 
gs.fit(x_train, y_train) 

теперь я хочу, чтобы повторно обучить классификатор, используя лучшие параметры поиска и дополнительный аргумент probability=True. Как я могу переопределить классификатор, используя лучшие параметры, плюс дополнительный параметр probability?

ответ

2

Вы можете использовать gs.best_params_, чтобы получить параметры, а затем создать новый классификатор как этот

clf = SVC(probability=True, **gs.best_params_) 
2

Вы также можете использовать метод set_params для экземпляра SVC и изменить атрибут probability перед вызовом fit.

from sklearn import svm, grid_search 

x_train = np.random.randn(10,5) 
y_train = np.random.randint(0, 2, size=(10,1)) 

param_grid = { 
    'C': [1e-2, 0.1, 1.0], 
    'gamma': [1e-4, 1e-3, 1e-2], 
    'class_weight': ['auto'] 
} 

svc1 = svm.SVC() 
gs = grid_search.GridSearchCV(svc1, param_grid, cv=3, n_jobs=12) 
gs_fitted = gs.fit(x_train, y_train) 

svc2 = svm.SVC(probability=True) 
# or manually set svc2.probability = True before ever calling svc2.fit 

svc2.set_params(**gs_fitted.best_params_) 
svc2.fit(x_train, y_train) 
0

Попробуйте

best_estimator = grid_search.best_estimator_.set_params(probability=True) 

Вы также можете клонировать его, чтобы убедиться, никакая другая часть кода повторно не используется этот оценщик.

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