sklearn-SVC實現與類參數

sklearn-SVC實現與類參數算法

SVC繼承了父類BaseSVC數組

SVC類主要方法:多線程

★__init__() 主要參數:dom

C: float參數 默認值爲1.0函數

錯誤項的懲罰係數。C越大,即對分錯樣本的懲罰程度越大,所以在訓練樣本中準確率越高,可是泛化能力下降,也就是對測試數據的分類準確率下降。相反,減少C的話,允許訓練樣本中有一些誤分類錯誤樣本,泛化能力強。對於訓練樣本帶有噪聲的狀況,通常採用後者,把訓練樣本集中錯誤分類的樣本做爲噪聲。測試

kernel: str參數 默認爲‘rbf’spa

算法中採用的核函數類型,可選參數有:線程

‘linear’:線性核函數對象

‘poly’:多項式核函數blog

‘rbf’:徑像核函數/高斯核

‘sigmod’:sigmod核函數

‘precomputed’:核矩陣

具體這些核函數類型,請參考上一篇博客中的核函數。須要說明的是,precomputed表示本身提早計算好核函數矩陣,這時候算法內部就再也不用核函數去計算核矩陣,而是直接用你給的核矩陣。核矩陣爲以下形式:

還有一點須要說明,除了上面限定的核函數外,還能夠給出本身定義的核函數,其實內部就是用你本身定義的核函數來計算核矩陣。

degree:int型參數 默認爲3

這個參數只對多項式核函數有用,是指多項式核函數的階數n

若是給的核函數參數是其餘核函數,則會自動忽略該參數。

gammafloat參數 默認爲auto

核函數係數,只對‘rbf’,‘poly’,‘sigmod’有效。

若是gamma爲auto,表明其值爲樣本特徵數的倒數,即1/n_features.

coef0:float參數 默認爲0.0

核函數中的獨立項,只有對‘poly’和‘sigmod’核函數有用,是指其中的參數c

probabilitybool參數 默認爲False

是否啓用機率估計。 這必須在調用fit()以前啓用,而且會fit()方法速度變慢

shrinkingbool參數 默認爲True

是否採用啓發式收縮方式

tol: float參數  默認爲1e^-3

svm中止訓練的偏差精度

cache_sizefloat參數 默認爲200

指定訓練所須要的內存,以MB爲單位,默認爲200MB。

class_weight字典類型或者‘balance’字符串。默認爲None

給每一個類別分別設置不一樣的懲罰參數C,若是沒有給,則會給全部類別都給C=1,即前面參數指出的參數C.

若是給定參數‘balance’,則使用y的值自動調整與輸入數據中的類頻率成反比的權重

verbose bool參數 默認爲False

是否啓用詳細輸出。 此設置利用libsvm中的每一個進程運行時設置,若是啓用,可能沒法在多線程上下文中正常工做。通常狀況都設爲False,不用管它。

max_iter int參數 默認爲-1

最大迭代次數,若是爲-1,表示不限制

random_stateint型參數 默認爲None

僞隨機數發生器的種子,在混洗數據時用於機率估計。

★fit()方法:用於訓練SVM,具體參數已經在定義SVC對象的時候給出了,這時候只須要給出數據集X和X對應的標籤y便可。

★predict()方法:基於以上的訓練,對預測樣本T進行類別預測,所以只須要接收一個測試集T,該函數返回一個數組表示個測試樣本的類別。

屬性有哪些:

svc.n_support_:各種各有多少個支持向量

svc.support_:各種的支持向量在訓練樣本中的索引

svc.support_vectors_:各種全部的支持向量

 

# -*- coding:utf-8 -*-

from sklearn.svm import SVC

import matplotlib.pyplot as plt

import numpy as np

X=np.array([[1,1],[1,2],[1,3],[1,4],[2,1],[2,2],[3,1],[4,1],[5,1],

       [5,2],[6,1],[6,2],[6,3],[6,4],[3,3],[3,4],[3,5],[4,3],[4,4],[4,5]])

Y=np.array([1]*14+[-1]*6)

T=np.array([[0.5,0.5],[1.5,1.5],[3.5,3.5],[4,5.5]])

svc=SVC(kernel='poly',degree=2,gamma=1,coef0=0)

svc.fit(X,Y)

pre=svc.predict(T)

print pre

print svc.n_support_

print svc.support_

print svc.support_vectors_

運行結果:

[ 1  1 -1 -1]      #預測結果

[2 3]            #-1類和+1類分別有2個和3個支持向量

[14 17  3  5 13] #-1類支持向量在元訓練集中的索引爲14,17,同理-1類支持向量在元訓練集中的索引爲3,5,13

[[ 3.  3.]    #給出各支持向量具體是哪些,前兩個是-1類的

 [ 4.  3.]

 [ 1.  4.]   #3個是+1的支持向量

 [ 2.  2.]

 [ 6.  4.]]

結果如圖所示。

相關文章
相關標籤/搜索