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...