經常用到sklearn中的SVC函數,這里把文檔中的參數翻譯了一些,以備不時之需。
本身這個函數也是基於libsvm實現的,所以在參數設置上有很多相似的地方。(PS: libsvm中的二次規划問題的解決算法是SMO)。
sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False,
tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape=None,random_state=None)
參數:
C:C-SVC的懲罰參數C?默認值是1.0
C越大,相當於懲罰松弛變量,希望松弛變量接近0,即對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣對訓練集測試時准確率很高,但泛化能力弱。C值小,對誤分類的懲罰減小,允許容錯,將他們當成噪聲點,泛化能力較強。
kernel:核函數,默認是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 線性:u'v
1 – 多項式:(gamma*u'*v + coef0)^degree
2 – RBF函數:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u'*v + coef0)
degree:多項式poly函數的維度,默認是3,選擇其他核函數時會被忽略。
gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函數參數。默認是’auto’,則會選擇1/n_features
coef0 :核函數的常數項。對於‘poly’和 ‘sigmoid’有用。
probability:是否采用概率估計?.默認為False
shrinking:是否采用shrinking heuristic方法,默認為true
tol:停止訓練的誤差值大小,默認為1e-3
cache_size:核函數cache緩存大小,默認為200
class_weight:類別的權重,字典形式傳遞。設置第幾類的參數C為weight*C(C-SVC中的C)
verbose:允許冗余輸出?
max_iter:最大迭代次數。-1為無限制。
decision_function_shape:‘ovo’, ‘ovr’ or None, default=None3
random_state:數據洗牌時的種子值,int值
主要調節的參數有:C、kernel、degree、gamma、coef0。
僅供參考,正確性自行檢測,最好閱讀官方文檔。