документация: http://scikit-learn.org/stable/modules/grid_search.html
In [ ]:
from sklearn import cross_validation, datasets, grid_search, linear_model, metrics
import numpy as np
import pandas as pd
In [ ]:
iris = datasets.load_iris()
In [ ]:
train_data, test_data, train_labels, test_labels = cross_validation.train_test_split(iris.data, iris.target,
test_size = 0.3,random_state = 0)
In [ ]:
classifier = linear_model.SGDClassifier(random_state = 0)
In [ ]:
classifier.get_params().keys()
In [ ]:
parameters_grid = {
'loss' : ['hinge', 'log', 'squared_hinge', 'squared_loss'],
'penalty' : ['l1', 'l2'],
'n_iter' : range(5,10),
'alpha' : np.linspace(0.0001, 0.001, num = 5),
}
In [ ]:
cv = cross_validation.StratifiedShuffleSplit(train_labels, n_iter = 10, test_size = 0.2, random_state = 0)
In [ ]:
grid_cv = grid_search.GridSearchCV(classifier, parameters_grid, scoring = 'accuracy', cv = cv)
In [ ]:
%%time
grid_cv.fit(train_data, train_labels)
In [ ]:
grid_cv.best_estimator_
In [ ]:
print grid_cv.best_score_
print grid_cv.best_params_
In [ ]:
grid_cv.grid_scores_[:10]
In [ ]:
randomized_grid_cv = grid_search.RandomizedSearchCV(classifier, parameters_grid, scoring = 'accuracy', cv = cv, n_iter = 20,
random_state = 0)
In [ ]:
%%time
randomized_grid_cv.fit(train_data, train_labels)
In [ ]:
print randomized_grid_cv.best_score_
print randomized_grid_cv.best_params_