0
我想在scikit學習庫中使用SVC類來解決多類分類問題。我對一對一戰略感興趣。我想 優化每對類的超參數(C和伽馬)。但我並不知道如何在scikit-learn中做到這一點。我怎樣才能做到這一點? 非常感謝。scikit學習多類支持向量機的參數優化
我想在scikit學習庫中使用SVC類來解決多類分類問題。我對一對一戰略感興趣。我想 優化每對類的超參數(C和伽馬)。但我並不知道如何在scikit-learn中做到這一點。我怎樣才能做到這一點? 非常感謝。scikit學習多類支持向量機的參數優化
正如@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'內核。您可以包含線性,多邊形和其他內核及其參數,以檢查是否適合您的程序。
您是否檢查過scikit-learn文檔? http://scikit-learn.org/stable/modules/grid_search.html有很多不同的方法可以做到這一點。 – ncfirth
非常感謝。從文檔中,我可以嘗試爲所有類對優化只有一對C和伽馬。那麼我是否需要將訓練數據劃分爲二元訓練集以訓練二進制SVM然後將其整合?或者我誤解了一些東西? – mdc