之前通過一個(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ì)講述。

網(wǎng)友評(píng)論