一、安裝libsvm
1、官網下載libsvm: https://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,下載完成後解壓至本地
2、打開終端,cd進入libsvm目錄下,執行以下操作:
> make clean > make > cd python > make
這樣就安裝好了libsvm。
二、使用libsvm進行分類
1、 準備數據集
為了演示方便,我們使用libsvm自帶的Iris數據集。下載鏈接:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/multiclass/iris.scale
2、 分割數據集
> ./svm-scale -l 0 -u 1 iris.scale > iris.scale.scale > ./svm-train -s 0 iris.scale.scale iris.model > ./svm-predict iris.scale.scale iris.model iris.out
第一行中,我們進行了數據標準化。-l和-u表示最小值和最大值,這裡分別設置為0和1。第二行中,我們訓練了一個模型iris.model。svm-train的-s參數表示要使用的分類器類型,0表示使用C-SVC分類器。第三行中,我們在訓練好的模型上進行了驗證,結果保存在iris.out中。
三、使用libsvm進行回歸
1、 準備數據集
為了演示方便,我們使用libsvm自帶的sinusoidal數據集。下載鏈接:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/regression/sinusoidal-1000.scale
2、 分割數據集
> ./svm-scale -l -1 -u 1 sinusoidal-1000.scale > sinusoidal-1000.scale.scale > ./svm-train -s 3 -t 2 -g 0.5 -c 1000 sinusoidal-1000.scale.scale sinusoidal.model > ./svm-predict sinusoidal-1000.scale.scale sinusoidal.model sinusoidal.out
第一行中,我們進行了數據標準化。這次的-l和-u參數分別設置為-1和1。第二行中,我們訓練了一個模型sinusoidal.model。svm-train的-s參數表示要使用的回歸類型,3表示使用epsilon-SVR回歸器。用-t控制核函數的類型,這裡使用的是徑向基核函數。-g控制徑向基核函數的帶寬,-c表示懲罰係數。第三行中,我們在訓練好的模型上進行了驗證,結果保存在sinusoidal.out中。
四、使用libsvm進行特徵選擇
特徵選擇是指從原始特徵集中選出一些最具預測能力的特徵子集。使用libsvm提供的工具svm-feature選擇進行特徵選擇。
1、 準備數據集
為了演示方便,我們使用libsvm自帶的breast-cancer數據集。下載鏈接:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/breast-cancer
2、 進行特徵選擇
> ./svm-scale -l 0 -u 1 breast-cancer > breast-cancer.scale > ./svm-feature-select -c 10 -t 0 -w -1 -r -v 0 breast-cancer.scale
在svm-feature-select中,-c表示使用分類器C-SVC,-t表示核函數類型,這裡使用的是線性核函數。-w表示是否使用權重,我們這裡選擇使用。-r表示是否隨機選擇特徵,我們選擇不隨機選擇。最後的-v 0表示在特徵選擇中不需要進行十折交叉驗證。
五、使用libsvm調優
libsvm提供了一個工具svm-train,可以用來訓練模型。我們可以通過調整其參數來優化模型的性能。
1、 準備數據集
為了演示方便,我們使用libsvm自帶的heart_scale數據集。下載鏈接:https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/heart_scale
2、 調優參數
> ./svm-scale -l -1 -u 1 heart_scale > heart_scale.scale > ./svm-train -s 0 -t 0 -v 5 -c 1 -g 0.1 heart_scale.scale
在svm-train中,-v參數表示進行n折交叉驗證。我們這裡使用5折交叉驗證。-s參數表示使用分類器類型C-SVC,-t參數表示核函數類型,這裡我們使用的是線性核函數。-c參數表示懲罰因子,-g參數表示徑向基核函數的波長。
六、總結
本文介紹了libsvm的基本用法,包括安裝、分類、回歸、特徵選擇和調優。希望對讀者有所幫助。
原創文章,作者:OZMX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149986.html