Я разбил свой набор данных на две части: тренировочный набор и тестовый набор.А пока просто забудьте тестовый набор и используйте обучающий набор с функцией GridSearchCV пакета sklearn.model_selection, чтобы найти лучшие параметры для SVM:
Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]
gammas = [0.001, 0.01, 0.1, 1]
# Set the parameters by cross-validation
param_grid = [{'kernel': ['rbf'], 'gamma': gammas, 'C': Cs}]
clf = GridSearchCV(svm.SVC(), param_grid = param_grid, cv=nfolds, verbose=1.)
clf.fit(x_train, labels)
после того, как найдены мои лучшие параметры C и гамма, ясоздайте SVM, и я подгоняю его к обучающему набору (использовавшемуся ранее для поиска наилучшего C и гаммы):
model = svm.SVC(kernel='rbf', C = clf.best_params_['C'], gamma = clf.best_params_['gamma'])
model.fit(x_train, y_train)
В этот момент я попробовал одну вещь, я использовал функцию предсказания () GridSearchCVобъект и один из объекта svm.SVC:
predicted_label1 = model.predict(x_test)
predicted_label2 = clf.predict(x_test)
, а затем я использовалification_report (y_test, предсказанный_лабел), чтобы оценить мои два вектора предиката.По моему мнению, я должен получить те же значения, но этого не происходит ... Вот мой вывод:
precision recall f1-score support
0.0 0.24 0.97 0.39 357
1.0 0.00 0.00 0.00 358
2.0 0.00 0.00 0.00 357
3.0 0.00 0.00 0.00 357
avg / total 0.06 0.24 0.10 1429
fine parametri
training set and test set saved
Create SVM classifier
precision recall f1-score support
0.0 0.70 0.63 0.66 357
1.0 0.89 0.90 0.90 358
2.0 0.89 0.94 0.91 357
3.0 0.85 0.88 0.86 357
avg / total 0.83 0.84 0.83 1429
Первый из GridSearchCV, а второй из SVM ... Это нормально?Что возвращает GridSearchCV?Подходит ли оно для пройденного тренировочного набора?