SVC
SVC用于分類:支持向量分類,基于libsvm實現(xiàn)的,數(shù)據(jù)擬合的時間復(fù)雜度是數(shù)據(jù)樣本的二次方,這使得他很難擴展到10000個數(shù)據(jù)集,當(dāng)輸入是多類別時(SVM最初是處理二分類問題的),通過一對一的方案解決,當(dāng)然也有別的解決辦法。
SVC參數(shù)說明如下:
C:懲罰項,float類型,可選參數(shù),默認為1.0,C越大,即對分錯樣本的懲罰程度越大,因此在訓(xùn)練樣本中準確率越高,但是泛化能力降低,也就是對測試數(shù)據(jù)的分類準確率降低。相反,減小C的話,容許訓(xùn)練樣本中有一些誤分類錯誤樣本,泛化能力強。對于訓(xùn)練樣本帶有噪聲的情況,一般采用后者,把訓(xùn)練樣本集中錯誤分類的樣本作為噪聲。
kernel:核函數(shù)類型,str類型,默認為’rbf’。可選參數(shù)為:
‘linear’:線性核函數(shù)
‘poly’:多項式核函數(shù)
‘rbf’:徑像核函數(shù)/高斯核
‘sigmod’:sigmod核函數(shù)
‘precomputed’:核矩陣。precomputed表示自己提前計算好核函數(shù)矩陣,這時候算法內(nèi)部就不再用核函數(shù)去計算核矩陣,而是直接用你給的核矩陣,核矩陣需要為n*n的。
degree:多項式核函數(shù)的階數(shù),int類型,可選參數(shù),默認為3。這個參數(shù)只對多項式核函數(shù)有用,是指多項式核函數(shù)的階數(shù)n,如果給的核函數(shù)參數(shù)是其他核函數(shù),則會自動忽略該參數(shù)。
gamma:核函數(shù)系數(shù),float類型,可選參數(shù),默認為auto。只對’rbf’ ,’poly’ ,’sigmod’有效。如果gamma為auto,代表其值為樣本特征數(shù)的倒數(shù),即1/n_features。
coef0:核函數(shù)中的獨立項,float類型,可選參數(shù),默認為0.0。只有對’poly’ 和,’sigmod’核函數(shù)有用,是指其中的參數(shù)c。
probability:是否啟用概率估計,bool類型,可選參數(shù),默認為False,這必須在調(diào)用fit()之前啟用,并且會fit()方法速度變慢。
shrinking:是否采用啟發(fā)式收縮方式,bool類型,可選參數(shù),默認為True。
tol:svm停止訓(xùn)練的誤差精度,float類型,可選參數(shù),默認為1e^-3。
cache_size:內(nèi)存大小,float類型,可選參數(shù),默認為200。指定訓(xùn)練所需要的內(nèi)存,以MB為單位,默認為200MB。
class_weight:類別權(quán)重,dict類型或str類型,可選參數(shù),默認為None。給每個類別分別設(shè)置不同的懲罰參數(shù)C,如果沒有給,則會給所有類別都給C=1,即前面參數(shù)指出的參數(shù)C。如果給定參數(shù)’balance’,則使用y的值自動調(diào)整與輸入數(shù)據(jù)中的類頻率成反比的權(quán)重。
verbose:是否啟用詳細輸出,bool類型,默認為False,此設(shè)置利用libsvm中的每個進程運行時設(shè)置,如果啟用,可能無法在多線程上下文中正常工作。一般情況都設(shè)為False,不用管它。
max_iter:最大迭代次數(shù),int類型,默認為-1,表示不限制。
decision_function_shape:決策函數(shù)類型,可選參數(shù)’ovo’和’ovr’,默認為’ovr’?!痮vo’表示one vs one,’ovr’表示one vs rest。
random_state:數(shù)據(jù)洗牌時的種子值,int類型,可選參數(shù),默認為None。偽隨機數(shù)發(fā)生器的種子,在混洗數(shù)據(jù)時用于概率估計。
NuSVC
NuSVC(Nu-Support Vector Classification.):核支持向量分類,和SVC類似,也是基于libsvm實現(xiàn)的,但不同的是通過一個參數(shù)空值支持向量的個數(shù)。
nu:訓(xùn)練誤差的一個上界和支持向量的分數(shù)的下界。應(yīng)在間隔(0,1 ]。
其余同SVC
LinearSVC
LinearSVC(Linear Support Vector Classification):線性支持向量分類,類似于SVC,但是其使用的核函數(shù)是”linear“上邊介紹的兩種是按照brf(徑向基函數(shù)計算的,其實現(xiàn)也不是基于LIBSVM,所以它具有更大的靈活性在選擇處罰和損失函數(shù)時,而且可以適應(yīng)更大的數(shù)據(jù)集,他支持密集和稀疏的輸入是通過一對一的方式解決的。
LinearSVC 參數(shù)解釋
C:目標函數(shù)的懲罰系數(shù)C,用來平衡分類間隔margin和錯分樣本的,default C = 1.0;
loss:指定損失函數(shù)
penalty :
dual :選擇算法來解決對偶或原始優(yōu)化問題。當(dāng)nsamples>nfeaturesnsamples>nfeatures 時dual=false。
tol :(default = 1e - 3): svm結(jié)束標準的精度;
multi_class:如果y輸出類別包含多類,用來確定多類策略, ovr表示一對多,“crammer_singer”優(yōu)化所有類別的一個共同的目標 。如果選擇“crammer_singer”,損失、懲罰和優(yōu)化將會被被忽略。
fit_intercept :
intercept_scaling :
class_weight :對于每一個類別i設(shè)置懲罰系數(shù)C=classweight[i]?CC=classweight[i]?C,如果不給出,權(quán)重自動調(diào)整為 nsamples/(nclasses?np.bincount(y))nsamples/(nclasses?np.bincount(y))