部分內容參考博客,會有標註
SVC
轉載於:機器學習筆記(3)-sklearn支持向量機SVM–Spytensor
官方源碼
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 |
表示錯誤項的懲罰係數C越大,即對分錯樣本的懲罰程度越大,因此在訓練樣本中準確率越高,但是泛化能力降低;相反,減小C的話,容許訓練樣本中有一些誤分類錯誤樣本,泛化能力強。對於訓練樣本帶有噪聲的情況,一般採用後者,把訓練樣本集中錯誤分類的樣本作爲噪聲。 |
float參數 默認值爲1.0 |
kernel |
該參數用於選擇模型所使用的核函數,算法中常用的核函數有:-- linear:線性核函數-- poly:多項式核函數–rbf:徑像核函數/高斯核–sigmod:sigmod核函數–precomputed:核矩陣,該矩陣表示自己事先計算好的,輸入後算法內部將使用你提供的矩陣進行計算 |
str參數 默認爲‘rbf’ |
degree |
該參數只對’kernel=poly’(多項式核函數)有用,是指多項式核函數的階數n,如果給的核函數參數是其他核函數,則會自動忽略該參數。 |
int型參數 默認爲3 |
gamma |
該參數爲核函數係數,只對‘rbf’,‘poly’,‘sigmod’有效。如果gamma設置爲auto,代表其值爲樣本特徵數的倒數,即1/n_features,也有其他值可設定。 |
float參數 默認爲auto |
coef0 |
該參數表示核函數中的獨立項,只有對‘poly’和‘sigmod’核函數有用,是指其中的參數c。 |
float參數 默認爲0.0 |
probability |
該參數表示是否啓用概率估計。 這必須在調用fit()之前啓用,並且會使fit()方法速度變慢。 |
bool參數 默認爲False |
shrinkintol |
該參數表示是否選用啓發式收縮方式。 |
bool參數 默認爲True |
tol |
svm停止訓練的誤差精度,也即閾值。 |
float參數 默認爲1e^-3 |
cache_size |
該參數表示指定訓練所需要的內存,以MB爲單位,默認爲200MB。 |
float參數 默認爲200 |
class_weight |
該參數表示給每個類別分別設置不同的懲罰參數C,如果沒有給,則會給所有類別都給C=1,即前面參數指出的參數C。如果給定參數‘balance’,則使用y的值自動調整與輸入數據中的類頻率成反比的權重。 |
字典類型或者‘balance’字符串。默認爲None |
verbose |
該參數表示是否啓用詳細輸出。此設置利用libsvm中的每個進程運行時設置,如果啓用,可能無法在多線程上下文中正常工作。一般情況都設爲False,不用管它。 |
bool參數 默認爲False |
max_iter |
該參數表示最大迭代次數,如果設置爲-1則表示不受限制。 |
int參數 默認爲-1 |
random_state |
該參數表示在混洗數據時所使用的僞隨機數發生器的種子,如果選int,則爲隨機數生成器種子;如果選RandomState instance,則爲隨機數生成器;如果選None,則隨機數生成器使用的是np.random |
int,RandomState instance ,None 默認爲None |
函數
函數 |
作用 |
svc.decision_function(X) |
樣本X到分離超平面的距離 |
svc.fit(X, y[, sample_weight]) |
根據給定的訓練數據擬合SVM模型。 |
svc.get_params([deep]) |
獲取此估算器的參數並以字典行書儲存,默認deep=True,以分類iris數據集爲例,得到的參數如下 |
svc.predict(X) |
根據測試數據集進行預測 |
svc.score(X, y[, sample_weight]) |
返回給定測試數據和標籤的平均精確度 |
svc.predict_log_proba(X_test),svc.predict_proba(X_test) |
當sklearn.svm.SVC(probability=True)時,纔會有這兩個值,分別得到樣本的對數概率以及普通概率。 |
屬性
屬性 |
含義 |
svc.coef_[0] |
權重 |
svc.intercept_ |
bias,偏差 |
SVR
參考:sklearn線性迴歸,支持向量機SVR迴歸,隨機森林迴歸,神經網絡迴歸參數解釋及示例
sklearn.svm.SVR的參數介紹
官方源碼
sklearn.svm.SVR(kernel ='rbf',degree = 3,gamma ='auto_deprecated',coef0 = 0.0,
tol = 0.001,C = 1.0,epsilon = 0.1,shrinking = True,cache_size = 200,
verbose = False,max_iter = -1 )
參數解析
參數 |
含義 |
數據類型 |
kernel |
svc中指定的kernel類型。 可以是: ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ 或者自己指定。 默認使用‘rbf’ 。 |
string, optional (default=’rbf’) |
degree |
當指定kernel爲 ‘poly’時,表示選擇的多項式的最高次數,默認爲三次多項式。 若指定kernel不是‘poly’,則忽略,即該參數只對‘poly’有作用。 |
int, optional (default=3) |
gamma |
當kernel爲‘rbf’, ‘poly’或‘sigmoid’時的kernel係數。 如果不設置,默認爲 ‘auto’ ,此時,kernel係數設置爲:1/n_features |
float, optional (default=’auto’) |
coef0 |
kernel函數的常數項。 只有在 kernel爲‘poly’或‘sigmoid’時有效,默認爲0。 |
float, optional (default=0.0) |
tol |
誤差項達到指定值時則停止訓練,默認爲1e-3,即0.001。 |
float, optional (default=1e-3) |
C |
誤差項的懲罰參數,一般取值爲10的n次冪,如10的-5次冪,10的-4次冪。。。。10的0次冪,10,1000,1000,在python中可以使用pow(10,n) n=-5~inf C越大,相當於希望鬆弛變量接近0,即對誤分類的懲罰增大,趨向於對訓練集全分對的情況,這樣會出現訓練集測試時準確率很高,但泛化能力弱。 C值小,對誤分類的懲罰減小,容錯能力增強,泛化能力較強。 |
float, optional (default=1.0) |
epsilon |
ε,Epsilon在epsilon-SVR模型中。它指定了epsilon-tube,其中訓練損失函數中沒有懲罰與在實際值的距離epsilon內預測的點。 |
float,optional(默認值= 0.1) |
shrinking |
如果能預知哪些變量對應着支持向量,則只要在這些樣本上訓練就夠了,其他樣本可不予考慮,這不影響訓練結果,但降低了問題的規模並有助於迅速求解。進一步,如果能預知哪些變量在邊界上(即a=C),則這些變量可保持不動,只對其他變量進行優化,從而使問題的規模更小,訓練時間大大降低。這就是Shrinking技術。 Shrinking技術基於這樣一個事實:支持向量只佔訓練樣本的少部分,並且大多數支持向量的拉格朗日乘子等於C |
boolean, optional (default=True) |
cache_size |
指定內核緩存的大小,默認爲200M。 |
float, optional |
verbose |
是否啓用詳細輸出。 多線程時可能不會如預期的那樣工作。默認爲False。 |
bool, default: False |
max_iter |
默認設置爲-1,表示無窮大迭代次數。 Hard limit on iterations within solver, or -1 for no limit. |
int, optional (default=-1) |