libsvm使用方法?

Tags: 軟體,

所需要軟體下載:

這裡只考慮windows的環境:

工具/原料

電腦 軟體

方法/步驟

下載libsvm的zip包,只要解壓到某個資料夾就好就好(隨便D:\gjs\libsvm)

libsvm使用方法

安裝python

下載好gnuplot ,直接解壓就好,無需安裝(C:\gnuplot)

.資料格式說明

0 1:5.1 2:3.5 3:1.4 4:0.22 1:4.9 2:3.0 3:1.4 4:0.21 1:4.7 2:3.2 3:1.3 4:0.2[label] [Index1]:[value1] [index2]:[value2] [index3]:[value3] [label]:類別(通常是整數)[index n]: 有順序的索引 [value n]

可能需要自己轉換訓練以及測試資料的格式。

1. windows cmd命令視窗

下載的libsvm包裡面已經為我們編譯好了(windows)。

進入libsvm\windows,可以看到這幾個exe檔案:

1.svm-predict: svmpredict test_file mode_file output_file 依照已經train好的model ,輸入新的資料,並輸出預測新資料的類別。

2.svm-scale: 有時候特徵值的波動範圍比較大需要對特徵資料進行縮放,可以縮放到0--1之間(自己定義)。

3.svm-toy:似乎是圖形介面,可以自己畫點,產生資料等。

4.svm-train: svmtrain [option] train_file [model_file] train 會接受特定格式的輸入,產生一個model 檔案。

第一步:可以自己生成資料,使用svm-toy:

雙擊svm-toy,點選change可以在畫布上畫點:

libsvm使用方法

點選run,其實就是train的過程,劃分的區域:

libsvm使用方法

點選save可以儲存資料(假設儲存的資料在D://libsvm.txt)。

第二步:使用訓練資料libsvm.txt進行建模,使用svm-train:

使用cmd命令進入到我們解壓的libsvm目錄中的windows目錄,使用svm-train,如下:

libsvm使用方法

其中,

#iter為迭代次數,

nu 是你選擇的核函式型別的引數,

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

rho為判決函式的偏置項b,

nSV 為標準支援向量個數(0

nBSV為邊界上的支援向量個數(a[i]=c),

Total nSV為支援向量總個數(對於兩類來說,因為只有一個分類模型Total nSV = nSV,但是對於多類,這個是各個分類模型的nSV之和

同時在該目錄下會生成一個訓練好的model(libsvm.txt.model)可以開啟檔案檢視裡面的內容,主要包括一些引數和支援向量等

第三步:使用建好的model進行預測,使用svm-predict

libsvm使用方法

同時會生成一個輸出檔案(libsvm.txt.out),每行代表該行的預測值類別。

引數優化:

svm的引數優化很重要,libsvm包裡面包含了引數的優化函式,主要是暴力求解引數。一般來說我們會使用高斯核函式,包含兩個引數(c 和 g)

使用gird.py檔案進行引數優化選擇:

grid.py在libsvm/tools裡面,首先需要修改gird.py中的gnuplot檔案路徑問題,把檔案裡的路徑改成gnuplot 存放的目錄:

libsvm使用方法

進入grid.py的相應目錄,執行grid.py D://libsvm.txt

libsvm使用方法

前面兩個分別是c 跟g的值,這時候我們重新訓練模型(加上引數c g)

libsvm使用方法

可以看到,準確率有了顯著的提升, 其實這些步驟完全可以使用easy.py進行實現,同理也需要修改eays.py裡面的gnuplot檔案路徑問題,把檔案裡的路徑改成gnuplot 存放的目錄:

libsvm使用方法

步驟總結如下:

1.轉換訓練資料為相應的格式。

2.有時候可能需要使用 svm-scale對資料進行相應的縮放,有利於訓練建模。

libsvm使用方法

3.使用grid.py或者easy.py進行引數優化。

4.使用svm-train建模和svm-predict進行預測。

軟體,
相關問題答案