這樣,可以方便的從命令列的任何位置呼叫gnuplot和libsvm的可執行程式,如下呼叫svm-train.exe:
出現svm-train程式中的幫助提示,說明path配置成功。
至此,libsvm執行的環境配置完成。下面將通過例項講解如何使用libsvm進行分類。
2. 使用libsvm進行分類**
我們所使用的資料為uci的iris資料集,將其類別標識換為1、2、3。然後,取3/5作為訓練樣本,2/5作為測試樣本。使用論壇中「將uci資料轉變為libsvm使用資料格式的程式」一文將其轉換為libsvm所用格式,如下:
訓練檔案tra_iris.txt
1 1:5.4 2:3.4 3:1.7 4:0.2
1 1:5.1 2:3.7 3:1.5 4:0.4
1 1:4.6 2:3.6 3:1 4:0.2
1 1:5.1 2:3.3 3:1.7 4:0.5
1 1:4.8 2:3.4 3:1.9 4:0.2
……2 1:5.9 2:3.2 3:4.8 4:1.8
2 1:6.1 2:2.8 3:4 4:1.3
2 1:6.3 2:2.5 3:4.9 4:1.5
2 1:6.1 2:2.8 3:4.7 4:1.2
2 1:6.4 2:2.9 3:4.3 4:1.3
……3 1:6.9 2:3.2 3:5.7 4:2.3
3 1:5.6 2:2.8 3:4.9 4:2
3 1:7.7 2:2.8 3:6.7 4:2
3 1:6.3 2:2.7 3:4.9 4:1.8
3 1:6.7 2:3.3 3:5.7 4:2.1
3 1:7.2 2:3.2 3:6 4:1.8
……測試檔案tes_iris.txt
1 1:5.1 2:3.5 3:1.4 4:0.2
1 1:4.9 2:3 3:1.4 4:0.2
1 1:4.7 2:3.2 3:1.3 4:0.2
1 1:4.6 2:3.1 3:1.5 4:0.2
1 1:5 2:3.6 3:1.4 4:0.2
1 1:5.4 2:3.9 3:1.7 4:0.4
……2 1:7 2:3.2 3:4.7 4:1.4
2 1:6.4 2:3.2 3:4.5 4:1.5
2 1:6.9 2:3.1 3:4.9 4:1.5
2 1:5.5 2:2.3 3:4 4:1.3
2 1:6.5 2:2.8 3:4.6 4:1.5
……3 1:6.3 2:3.3 3:6 4:2.5
3 1:5.8 2:2.7 3:5.1 4:1.9
3 1:7.1 2:3 3:5.9 4:2.1
3 1:6.3 2:2.9 3:5.6 4:1.8
3 1:6.5 2:3 3:5.8 4:2.2
……libsvm的引數選擇一直是令人頭痛的問題。不過,對於初學者,如果資料不是很大,在libsvm的tools檔案中為大家提供了easy.py。它可以自動完成從歸一化到引數選擇的一切所需操作。
使用方法為:easy.py training_file [testing_file]
另外有其他引數選擇工具,可以參考tools中的readme說明。下面,我們先使用easy.py進行分類實驗。
(1)使用libsvm進行多分類——利用easy.py工具
在使用前,要確保上面環境變數已經配置。然後將tra_iris.txt、tes_iris.txt拷貝到tools資料夾,以防止寫長路徑名。同時,因為gnuplot的安裝路徑人人都不相同,所以,需要在easy.py中做相應修改,如下將
code:
else:
# example for windows
svmscale_exe = r"../windows/svm-scale.exe"
svmtrain_exe = r"../windows/svm-train.exe"
svmpredict_exe = r"../windows/svm-predict.exe"
gnuplot_exe = r"d:/greensoft/gnuplot/bin/pgnuplot.exe"
grid_py = r"./grid.py"中d:/greensoft/gnuplot/bin/pgnuplot.exe,改為你的pgnuplot.exe所在位置。
【syr
補充:在「交叉驗證尋找最優引數」之前,需要在grid.py中:
code:
else:
# example for windows
svmtrain_exe = r"../windows/svm-train.exe"
gnuplot_exe = r"g:/program files/gnuplot/bin/pgnuplot.exe"其中的"g:/program files/gnuplot/bin/pgnuplot.exe"改為你的pgnuplot.exe所在的路徑。】
接著,「執行」中輸入cmd開啟命令列,轉到/libsvm-2.9/tools所在目錄,然後,輸入命令
code:
easy.py svmtra_iris.txt svmtes_iris.txt
執行,程式會自動呼叫訓練、交叉驗證、**將結果儲存到同目錄的檔案中。運**況如下:
程式自動尋參情況圖示如下:
程式執行的結果在svmtes_iris.txt.predict檔案中,規範化結果在svmtra_iris.txt.scale.out中。從運**況可看出,其**精度為accuracy = 96.6667% (58/60)。
(2)對應上實驗,手動使用libsvm進行多分類的方法
下面方法是通過分析easy.py所得,均在「執行」cmd命令列執行。
規範化訓練樣本
code:
svm-scale -s svmtra_iris.txt.range svmtra_iris.txt > svmtra_iris.txt.scale
交叉驗證尋找最優引數
code:
grid.py -svmtrain svm-train -gnuplot gnuplot svmtra_iris.txt.scale
利用尋找的引數訓練模型
code:
svm-train -c 8.0 -g 0.03125 svmtra_iris.txt.scale svmtra_iris.txt.model
規範化測試樣本
code:
svm-scale -r svmtra_iris.txt.range svmtes_iris.txt > svmtes_iris.txt.scale
使用模型進行分類**
code:
svm-predict svmtes_iris.txt.scale svmtra_iris.txt.model svmtes_iris.txt.predict
svm-train、svm-scale、svm-predict等名字為windows資料夾中exe檔案的名字。
至此,使用libsvm進行分類的完整過程分析介紹,歡迎討論。
Windows下安裝OpenSSL及其使用
1.perl 安裝後重啟系統。2latest openssl 並解壓到 c openssl 0.9.8k。參考openssl 目錄下的 install.win32 說明進行安裝 1 進入解壓目錄。cd c openssl 0.9.8k 2 執行configure。perl configure vc ...
Windows下安裝OpenSSL及其使用
方法一 windows binaries can be found here you can do this conversion with the openssl library 方法二 手動編譯 source 參考openssl目錄下的install.win32說明進行安裝 1 進入解壓目錄。c...
MATLAB下使用libsvm (三)
編寫程式的基本步驟 1 將資料中心化,是每一組特徵中心化,而不是每個樣本的資料中心化哦。原因就是之後要進行pca降維,這個過程之前如果不將資料中心化,那麼之後測試資料集對映出來的點就不對啦 具體看圖啦 至於是否要歸一化,這個並不是必要的步驟,所以看心情咯 2 pca降維,這個最好是以矩陣短的那一邊進...