Объединение поиска по сетке и перекрестной проверки в scikit learn

Для улучшения результатов машины опорных векторов мне нужно использовать поиск по сетке для поиска лучших параметров и перекрестной проверки. Я не уверен, как объединить их в scikit-learn. Лучшие параметры поиска по сетке (http://scikit-learn.org/stable/modules/grid_search.html) и перекрестная проверка позволяют избежать переобучения (http://scikit-learn.org/dev/modules/cross_validation.html)

#GRID SEARCH
from sklearn import grid_search
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svr = svm.SVC()
clf = grid_search.GridSearchCV(svr, parameters)
#print(clf.fit(X, Y))

#CROSS VALIDATION
from sklearn import cross_validation
X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)

print("crossvalidation")
print(clf.score(X_test, y_test))
clf = svm.SVC(kernel='linear', C=1)
scores = cross_validation.cross_val_score(clf, X, Y, cv=3)
print(scores )

полученные результаты:

GridSearchCV(cv=None,
   estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel=rbf, probability=False, shrinking=True, tol=0.001, verbose=False),
   estimator__C=1.0, estimator__cache_size=200,
   estimator__class_weight=None, estimator__coef0=0.0,
   estimator__degree=3, estimator__gamma=0.0, estimator__kernel=rbf,
   estimator__probability=False, estimator__shrinking=True,
   estimator__tol=0.001, estimator__verbose=False, fit_params={},
   iid=True, loss_func=None, n_jobs=1,
   param_grid={'kernel': ('linear', 'rbf'), 'C': [1, 10]},
   pre_dispatch=2*n_jobs, refit=True, score_func=None, verbose=0)

crossvalidation
0.0
[ 0.11111111  0.11111111  0.        ]

person postgres    schedule 14.02.2013    source источник


Ответы (1)


Сначала вы должны выполнить разделение разработки / оценки, запустить поиск по сетке в части разработки и в конце измерить уникальную итоговую оценку в части оценки:

пример в документация.

person ogrisel    schedule 14.02.2013
comment
Я попытался запустить со своими данными и получил эту ошибку: clf = GridSearchCV (SVC (C = 1), tuned_parameters, scoring = score) TypeError: __init __ () получил неожиданный аргумент ключевого слова 'scoring', я также попытался запустить оригинальный пример и там такая же ошибка, но как это возможно? оценка - это параметр функции! - person postgres; 17.02.2013
comment
Проверьте номер версии документа и выберите ту, которая соответствует установленной вами. URL-адреса различны для каждой версии: scikit-learn.org/dev/modules/grid_search. html - это ветка разработки. scikit-learn.org/stable/modules/grid_search.html - последний выпущенная версия (0.13 на момент написания) и scikit-learn.org/0.13/modules /grid_search.html - это фиксированный URL для версии 0.13. - person ogrisel; 18.02.2013
comment
Я исправил ответ, чтобы указать на стабильную версию документа. - person ogrisel; 09.06.2015