之前通過一個(gè)系列對(duì)支持向量機(jī)(以下簡(jiǎn)稱SVM)算法的原理做了一個(gè)總結(jié),本文從實(shí)踐的角度對(duì)scikit-learn SVM算法庫(kù)的使用做一個(gè)小結(jié)。scikit-learn SVM算法庫(kù)封裝了libsvm 和 liblinear 的實(shí)現(xiàn),僅僅重寫了算法了接口部分。

1. scikit-learn SVM算法庫(kù)使用概述

    scikit-learn中SVM的算法庫(kù)分為兩類,一類是分類的算法庫(kù),包括SVC, NuSVC,和LinearSVC 3個(gè)類。另一類是回歸算法庫(kù),包括SVR, NuSVR,和LinearSVR 3個(gè)類。相關(guān)的類都包裹在sklearn.svm模塊之中。

    對(duì)于SVC, NuSVC,和LinearSVC 3個(gè)分類的類,SVC和 NuSVC差不多,區(qū)別僅僅在于對(duì)損失的度量方式不同,而LinearSVC從名字就可以看出,他是線性分類,也就是不支持各種低維到高維的核函數(shù),僅僅支持線性核函數(shù),對(duì)線性不可分的數(shù)據(jù)不能使用。

    同樣的,對(duì)于SVR, NuSVR,和LinearSVR 3個(gè)回歸的類, SVR和NuSVR差不多,區(qū)別也僅僅在于對(duì)損失的度量方式不同。LinearSVR是線性回歸,只能使用線性核函數(shù)。

    我們使用這些類的時(shí)候,如果有經(jīng)驗(yàn)知道數(shù)據(jù)是線性可以擬合的,那么使用LinearSVC去分類 或者LinearSVR去回歸,它們不需要我們?nèi)ヂ恼{(diào)參去選擇各種核函數(shù)以及對(duì)應(yīng)參數(shù), 速度也快。如果我們對(duì)數(shù)據(jù)分布沒有什么經(jīng)驗(yàn),一般使用SVC去分類或者SVR去回歸,這就需要我們選擇核函數(shù)以及對(duì)核函數(shù)調(diào)參了。

    什么特殊場(chǎng)景需要使用NuSVC分類 和 NuSVR 回歸呢?如果我們對(duì)訓(xùn)練集訓(xùn)練的錯(cuò)誤率或者說支持向量的百分比有要求的時(shí)候,可以選擇NuSVC分類 和 NuSVR 。它們有一個(gè)參數(shù)來控制這個(gè)百分比。

    這些類的詳細(xì)使用方法我們?cè)谙旅嬖僭敿?xì)講述。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式