GridSearchCV返回不同的值

时间:2018-11-15 21:09:35

标签: python machine-learning scikit-learn svm grid-search

我将数据集分为两部分:训练集和测试集。现在,只需忘记测试集,并将训练集与sklearn.model_selection软件包的GridSearchCV函数结合使用,即可为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和gamma参数后,我创建了一个SVM,并将其与训练集配合使用(用于搜索最佳C和gamma):

model = svm.SVC(kernel='rbf', C = clf.best_params_['C'], gamma = clf.best_params_['gamma'])        
model.fit(x_train, y_train)

在这一点上,我尝试了一件事,我使用了GridSearchCV对象和一个svm.SVC对象的predict()函数:

predicted_label1 = model.predict(x_test)
predicted_label2 = clf.predict(x_test)

,然后我使用了分类报告(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返回什么?它适合通过的训练集吗?

0 个答案:

没有答案