SVM的設定(僅做記憶)和安裝LIBSVM工具包

2021-10-22 06:39:24 字數 3304 閱讀 7531

libsvm 使用的一般步驟是:

1)按照libsvm軟體包所要求的格式準備資料集;

2)對資料進行簡單的縮放操作;

3)首要考慮選用rbf 核函式;

4)採用交叉驗證選擇最佳引數c與g ;

5)採用最佳引數c與g 對整個訓練集進行訓練獲取支援向量機模型;

6)利用獲取的模型進行測試與**。

1)libsvm使用的資料格式

該軟體使用的訓練資料和檢驗資料檔案格式如下:
[label] [index1]:[value1] [index2]:[value2] …

[label] [index1]:[value1] [index2]:[value2] …

一行一條記錄資料,如:

+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1

這裡(x,y)à((0.708,1,1, -0.320, -0.105, -1), +1)

label 或說是class, 就是你要分類的種類,通常是一些整數。

index 是有順序的索引,通常是連續的整數。

value 就是用來 train 的資料,通常是一堆實數。

2)對資料進行簡單的縮放操作

掃瞄資料. 因為原始資料可能範圍過大或過小, svmscale可以先將資料重新scale (縮放) 到適當範圍使訓練與**速度更快。

svmscale.exe的用法:svmscale.exe feature.txt feature.scaled

預設的歸一化範圍是[-1,1],可以用引數-l和-u分別調整上界和下屆,feature.txt是輸入特徵檔名 輸出的歸一化特徵名為feature.scaled

3) 考慮選用rbf 核函式

訓練資料形成模型(model),實質是算出了wx+b=0中的w,b.

svmtrain的用法:svmtrain [options] training_set_file [model_file]

其中options涵義如下:

-s svm型別:設定svm 型別,預設值為0,可選型別有:

0 – c- svc

1 – nu - svc

2 – one-class-svm

3 – e - svr

4 – nu-svr

-t 核函式型別:設定核函式型別,預設值為2,可選型別有:

0 – 線性核:u』*v

1 – 多項式核:(g*u』*v+ coef0)degree

2 – rbf 核:exp(-||u-v||||u-v||/gg)

3 – sigmoid 核:tanh(g*u』*v+ coef 0)

-d degree:核函式中的degree設定,預設值為3;

-g r(gama):核函式中的函式設定(預設1/ k);

-r coef 0:設定核函式中的coef0,預設值為0;

-c cost:設定c- svc、e - svr、n - svr中從懲罰係數c,預設值為1;

-n nu :設定nu - svc、one-class-svm 與nu - svr 中引數nu ,預設值0.5;

-p e :核寬,設定e - svr的損失函式中的e ,預設值為0.1;

-m cachesize:設定cache記憶體大小,以mb為單位(預設40):

-e e :設定終止準則中的可容忍偏差,預設值為0.001;

-h shrinking:是否使用啟發式,可選值為0 或1,預設值為1;

-b 概率估計:是否計算svc或svr的概率估計,可選值0 或1,預設0;

-wi weight:對各類樣本的懲罰係數c加權,預設值為1;

-v n:n折交叉驗證模式。

其中-g選項中的k是指輸入資料中的屬性數。操作引數 -v 隨機地將資料剖分為n 部分並計算交叉檢驗準確度和均方根誤差。以上這些引數設定可以按照svm 的型別和核函式所支援的引數進行任意組合,如果設定的引數在函式或svm 型別中沒有也不會產生影響,程式不會接受該引數;如果應有的引數設定不正確,引數將採用預設值。training_set_file是要進行訓練的資料 集;model_file是訓練結束後產生的模型檔案,該引數如果不設定將採用預設的檔名,也可以設定成自己慣用的檔名。舉個例子如下:

c:\libsvm-2.85\windows>svmtrain heart_scale

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nsv = 132, nbsv = 107

total nsv = 132

現簡單對螢幕回顯資訊進行說明:

#iter為迭代次數,

nu 與前面的操作引數-n nu 相同,

obj為svm檔案轉換為的二次規劃求解得到的最小值,

rho 為判決函式的常數項b,

nsv 為支援向量個數,

nbsv為邊界上的支援向量個數,

total nsv為支援向量總個數。

訓練後的模型儲存為檔案*.model,用記事本開啟其內容如下:

svm_type c_svc % 訓練所採用的svm型別,此處為c- svc

kernel_type rbf %訓練採用的核函式型別,此處為rbf核

gamma 0.0769231 %設定核函式中的g ,預設值為1/ k

nr_class 2 %分類時的類別數,此處為兩分類問題

total_sv 132 %總共的支援向量個數

rho 0.424462 %決策函式中的常數項b

label 1 -1%類別標籤

nr_sv 64 68 %各類別標籤對應的支援向量個數

optimization finished, #iter = 480 迭代次數

nu = 0.909091 svc ,one-class-svm, svr 引數

obj = -108.333321 二次規劃的最小值

rho = -0.166667 決策函式常數項

nsv = 220 支援向量數

nbsv = 100 邊界上支援向量數

total nsv = 220 支援向量總數

accuracy = 100% (220/220) (classification) 分類精度

matlab安裝libsvm工具包

sysbench的安裝和做效能測試

ysbench是乙個模組化的 跨平台 多執行緒基準測試工具,主要用於評估測試各種不同系統引數下的資料庫負載情況。關於這個專案的詳細介紹請看 它主要包括以下幾種方式的測試 1 cpu效能 2 磁碟io效能 3 排程程式效能 4 記憶體分配及傳輸速度 5 posix執行緒效能 6 資料庫效能 oltp基...

sysbench的安裝和做效能測試

sysbench是乙個模組化的 跨平台 多執行緒基準測試工具,主要用於評估測試各種不同系統引數下的資料庫負載情況。關於這個專案的詳細介紹請看 它主要包括以下幾種方式的測試 1 cpu效能 2 磁碟io效能 3 排程程式效能 4 記憶體分配及傳輸速度 5 posix執行緒效能 6 資料庫效能 oltp...

sysbench的安裝和做效能測試

sysbench是乙個模組化的 跨平台 多執行緒基準測試工具,主要用於評估測試各種不同系統引數下的資料庫負載情況。關於這個專案的詳細介紹請看 它主要包括以下幾種方式的測試 1 cpu效能 2 磁碟io效能 3 排程程式效能 4 記憶體分配及傳輸速度 5 posix執行緒效能 6 資料庫效能 oltp...