2016-02-02 46 views
0

我想在scikit学习库中使用SVC类来解决多类分类问题。我对一对一战略感兴趣。我想 优化每对类的超参数(C和伽马)。但我并不知道如何在scikit-learn中做到这一点。我怎样才能做到这一点? 非常感谢。scikit学习多类支持向量机的参数优化

+0

您是否检查过scikit-learn文档? http://scikit-learn.org/stable/modules/grid_search.html有很多不同的方法可以做到这一点。 – ncfirth

+0

非常感谢。从文档中,我可以尝试为所有类对优化只有一对C和伽马。那么我是否需要将训练数据划分为二元训练集以训练二进制SVM然后将其整合?或者我误解了一些东西? – mdc

回答

1

正如@ncfirth所述,您可以使用GridSearchCV根据您的训练集找到最佳参数。我在我的程序中使用了下面的代码。

tuned_parameters = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8], 
        'C': [1, 10, 100, 1000]}] 

scores = ['precision', 'recall'] 

for score in scores: 
    print("# Tuning hyper-parameters for %s" % score) 
    print() 

    clf = GridSearchCV(svm.SVC(C=1), tuned_parameters, cv=5, 
         scoring='%s_macro' % score) 
    clf.fit(X, Y) 

    print("Best parameters set found on development set:") 
    print() 
    print(clf.best_params_) 

我从stackoverflow得到了上述解决方案(没有链接到它),它帮助我在我的程序中选择正确的gamma值和C值。我的要求是只检查'rbf'内核。您可以包含线性,多边形和其他内核及其参数,以检查是否适合您的程序。