本篇主要講講Sklearn中SVM,SVM主要有LinearSVC、NuSVC和SVC三種方法,我們將具體介紹這三種分類方法都有哪些參數值以及不同參數值的含義。
在開始看本篇前你可以看看這篇:支持向量機詳解
LinearSVCclass sklearn.svm.LinearSVC(penalty='l2', loss='squared_hinge', dual=True, tol=0.0001, C=1.0, multi_class='ovr', fit_intercept=True, intercept_scaling=1, class_weight=None, verbose=0, random_state=None, max_iter=1000)
penalty:正則化參數,L1和L2兩種參數可選,僅LinearSVC有。
loss:損失函數,有『hinge』和『squared_hinge』兩種可選,前者又稱L1損失,後者稱為L2損失,默認是是’squared_hinge』,其中hinge是SVM的標準損失,squared_hinge是hinge的平方。
dual:是否轉化為對偶問題求解,默認是True。
tol:殘差收斂條件,默認是0.0001,與LR中的一致。
C:懲罰係數,用來控制損失函數的懲罰係數,類似於LR中的正則化係數。
multi_class:負責多分類問題中分類策略制定,有『ovr』和『crammer_singer』 兩種參數值可選,默認值是』ovr』,'ovr'的分類原則是將待分類中的某一類當作正類,其他全部歸為負類,通過這樣求取得到每個類別作為正類時的正確率,取正確率最高的那個類別為正類;『crammer_singer』 是直接針對目標函數設置多個參數值,最後進行優化,得到不同類別的參數值大小。
fit_intercept:是否計算截距,與LR模型中的意思一致。
class_weight:與其他模型中參數含義一樣,也是用來處理不平衡樣本數據的,可以直接以字典的形式指定不同類別的權重,也可以使用balanced參數值。
verbose:是否冗餘,默認是False.
random_state:隨機種子的大小。
max_iter:最大迭代次數,默認是1000。
coef_:各特徵的係數(重要性)。
intercept_:截距的大小(常數值)。
class sklearn.svm.NuSVC(nu=0.5, 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='ovr', random_state=None))
nu:訓練誤差部分的上限和支持向量部分的下限,取值在(0,1)之間,默認是0.5
kernel:核函數,核函數是用來將非線性問題轉化為線性問題的一種方法,默認是「rbf」核函數,常用的核函數有以下幾種:
關於不同核函數之間的區別,可以參考這篇文章:https://blog.csdn.net/batuwuhanpei/article/details/52354822
degree:當核函數是多項式核函數的時候,用來控制函數的最高次數。(多項式核函數是將低維的輸入空間映射到高維的特徵空間)
gamma:核函數係數,默認是「auto」,即特徵維度的倒數。
coef0:核函數常數值(y=kx+b中的b值),只有『poly』和『sigmoid』核函數有,默認值是0。
max_iter:最大迭代次數,默認值是-1,即沒有限制。
probability:是否使用概率估計,默認是False。
decision_function_shape:與'multi_class'參數含義類似。
cache_size:緩衝大小,用來限制計算量大小,默認是200M。
support_:以數組的形式返回支持向量的索引。
support_vectors_:返回支持向量。
n_support_:每個類別支持向量的個數。
dual_coef_:支持向量係數。
coef_:每個特徵係數(重要性),只有核函數是LinearSVC的時候可用。
intercept_:截距值(常數值)。
class 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='ovr', random_state=None)
C:懲罰係數。
SVC和NuSVC方法基本一致,唯一區別就是損失函數的度量方式不同(NuSVC中的nu參數和SVC中的C參數)。
三種分類方法的方法基本一致,所以就一起來說啦。
decision_function(X):獲取數據集X到分離超平面的距離。
fit(X, y):在數據集(X,y)上使用SVM模型。
get_params([deep]):獲取模型的參數。
predict(X):預測數據值X的標籤。
score(X,y):返回給定測試集和對應標籤的平均準確率。
你還可以看:
Sklearn參數詳解—LR模型
Sklearn參數詳解--決策樹