libSVM在matlab下的使用安裝

1) 從LIBSVM的官網http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下載最新版本的LIBSVM,當前版本爲libsvm-3.18.zip

2) 解壓壓縮包到電腦上一位置,如:C:\Program Files\libsvm-3.18

3) 假設你使用的是64位的操作系統和matlab。此時將libsvm-3.18文件夾下的windows目錄添加到matlab目錄中。即在matlab目錄中添加:C:\ProgramFiles\libsvm-3.18\windows。因爲windows下包含了matlab可執行的二進制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64

4) 假設你使用的是32位操作系統和matlab,則需要自己編譯相應的二進制文件。

在matlab命令窗口輸入

        >>mex –setup

這時matlab會提示你選擇編譯mex文件的c/c++編譯器(先輸入n,再選擇對應的編譯器)。

        選擇一個你電腦上安裝的c/c++編譯器,例如Microsoft Visual C++ 2010

將matlab當前目錄設置爲:cd ‘C:\Program Files\libsvm-3.18\matlab’

        輸入命令make

這時你會看到當前目錄生成了二進制文件(4個):       

        libsvmread.mexw32

        libsvmwrite.mexw32

        svmpredict.mexw32

        svmtrain.mexw32

將當前目錄添加到matlab路徑中即可。

5) 例子一個測試

        注意到libsvm-3.18下有一個數據文件,名稱爲heart_scale。這是一個libsvm格式的數據文件。可使用libsvmread函數將其轉化爲matlab格式。

可使用以下命令測試:

        [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');

        model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');

        [predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % test the trainingdata

如果出現一行:Accuracy = 86.6667% (234/270) (classification)。就說明成功了。就可以在matlab中使用svm了。

6) svmtrain函數相關參數說明

        svmtrain函數返回的model可以用來對測試數據集進行預測。這是一個結構體變量,主要包括了以下幾個域。[Parameters, nr_class, totalSV, rho, Label, ProbA, ProbB, nSV,sv_coef, SVs]。英文說明如下:

       -Parameters: parameters

       -nr_class: number of classes; = 2 for regression/one-class svm

       -totalSV: total #SV

       -rho: -b of the decision function(s) wx+b

       -Label: label of each class; empty for regression/one-class SVM

       -ProbA: pairwise probability information; empty if -b 0 or in one-classSVM

       -ProbB: pairwise probability information; empty if -b 0 or in one-classSVM

       -nSV: number of SVs for each class; empty for regression/one-class SVM

       -sv_coef: coefficients for SVs in decision functions

       -SVs: support vectors

        如果沒有指定’-b 1’選項則ProbA和ProbB爲空矩陣。此外,當指定’-v’選項時,返回的model是一個數值,是cross-validation的準確率。

        其中model.paramter是一個5X1的向量,model.Parameters參數意義從上到下依次爲:

        -s svm類型:SVM設置類型(默認0)

        -t 核函數類型:核函數設置類型(默認2)

        -d degree:核函數中的degree設置(針對多項式核函數)(默認3)

        -g r(gama):核函數中的gamma函數設置(針對多項式/rbf/sigmoid核函數) (默認類別數目的倒數)

        -r coef0:核函數中的coef0設置(針對多項式/sigmoid核函數)((默認0)

7)svmpredict函數參數說明

        svmpredict函數返回三個值:

  1. predict_label,是訓練集預測得到的label向量。

  2. accuracy,是一個3維的向量,從上到下分別是:分類準率(分類問題中用到的參數指標);平均平方誤差(MSE (mean squared error)) (迴歸問題中用到的參數指標);平方相關係數(r2 (squared correlation coefficient))(迴歸問題中用到的參數指標)。

  3. 輸出是個矩陣,包含着決策值或者是概率估計(當’-b 1’被指定時)。當訓練數據有k類時,決策值矩陣是一個n行k*(k-1)/2列的矩陣(n爲測試數據集個數,k爲類別數),而每一行的輸出是k*(k-1)/2個二分類器的結果。當’-b 1’被指定時,概率估計矩陣是一個n行k類的矩陣(n爲測試數據集個數,k爲類別數),每一行的輸出是該測試數據屬於每個類的概率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章