我在一些数据集中应用了SVM(scikit-learn),希望找到可以为测试集提供最佳准确度的C和gamma值。
首先,我将C固定为一个整数,然后迭代许多gamma值,直到我获得了为该C提供最佳测试集准确度的gamma。然后,我将上述步骤中获得的这个gamma固定下来,并迭代C的值,找到可以给我最佳准确度的C,如此循环...
但是以上步骤永远无法给出产生最佳测试集准确度的gamma和C的最佳组合。
有人能帮我找到一种方法来获取在sckit-learn中的(gamma,C)组合吗?
我在一些数据集中应用了SVM(scikit-learn),希望找到可以为测试集提供最佳准确度的C和gamma值。
首先,我将C固定为一个整数,然后迭代许多gamma值,直到我获得了为该C提供最佳测试集准确度的gamma。然后,我将上述步骤中获得的这个gamma固定下来,并迭代C的值,找到可以给我最佳准确度的C,如此循环...
但是以上步骤永远无法给出产生最佳测试集准确度的gamma和C的最佳组合。
有人能帮我找到一种方法来获取在sckit-learn中的(gamma,C)组合吗?
#Create a dictionary of possible parameters
params_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],
'gamma': [0.0001, 0.001, 0.01, 0.1],
'kernel':['linear','rbf'] }
#Create the GridSearchCV object
grid_clf = GridSearchCV(SVC(class_weight='balanced'), params_grid)
#Fit the data with the best possible parameters
grid_clf = clf.fit(X_train, y_train)
#Print the best estimator with it's parameters
print grid_clf.best_estimators
您可以在这里阅读有关GridSearchCV的更多信息,以及这里有关RandomizedSearchCV的更多信息。需要注意的是,SVM需要大量的CPU计算资源,因此请小心传递的参数数量。根据您的数据和传递的参数数量,处理可能需要一些时间。
这个链接也包含一个示例。
clf.best_params_
(在 clf
对象上) - Arthur AttoutX_test
吗?我们可以使用交叉验证吗? :) - EmJX_test
来测试你的分类器。如果你想使用交叉验证,只需在 GridSearchCV
中指定 cv
属性即可。 - Gambit1614