libSVM在matlab下的使用安装
1) 從LIBSVM的官網(wǎng)http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下載最新版本的LIBSVM,當(dāng)前版本為libsvm-3.18.zip
2) 解壓壓縮包到電腦上一位置,如:C:\Program Files\libsvm-3.18
3) 假設(shè)你使用的是64位的操作系統(tǒng)和matlab。此時(shí)將libsvm-3.18文件夾下的windows目錄添加到matlab目錄中。即在matlab目錄中添加:C:\ProgramFiles\libsvm-3.18\windows。因?yàn)閣indows下包含了matlab可執(zhí)行的二進(jìn)制文件libsvmread.mexw64/libsvmwrite.mexw64/svmpredict.mexw64/svmtrain.mexw64
4) 假設(shè)你使用的是32位操作系統(tǒng)和matlab,則需要自己編譯相應(yīng)的二進(jìn)制文件。
在matlab命令窗口輸入
????????>>mex –setup
這時(shí)matlab會(huì)提示你選擇編譯mex文件的c/c++編譯器(先輸入n,再選擇對(duì)應(yīng)的編譯器)。
????????選擇一個(gè)你電腦上安裝的c/c++編譯器,例如Microsoft Visual C++ 2010
將matlab當(dāng)前目錄設(shè)置為:cd ‘C:\Program Files\libsvm-3.18\matlab’
????????輸入命令make
這時(shí)你會(huì)看到當(dāng)前目錄生成了二進(jìn)制文件(4個(gè)): ? ? ??
????????libsvmread.mexw32
????????libsvmwrite.mexw32
????????svmpredict.mexw32
????????svmtrain.mexw32
將當(dāng)前目錄添加到matlab路徑中即可。
5) 例子一個(gè)測(cè)試
????????注意到libsvm-3.18下有一個(gè)數(shù)據(jù)文件,名稱為heart_scale。這是一個(gè)libsvm格式的數(shù)據(jù)文件??墒褂胠ibsvmread函數(shù)將其轉(zhuǎn)化為matlab格式。
可使用以下命令測(cè)試:
????????[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
如果出現(xiàn)一行:Accuracy = 86.6667% (234/270) (classification)。就說(shuō)明成功了。就可以在matlab中使用svm了。
6) svmtrain函數(shù)相關(guān)參數(shù)說(shuō)明
????????svmtrain函數(shù)返回的model可以用來(lái)對(duì)測(cè)試數(shù)據(jù)集進(jìn)行預(yù)測(cè)。這是一個(gè)結(jié)構(gòu)體變量,主要包括了以下幾個(gè)域。[Parameters, nr_class, totalSV, rho, Label, ProbA, ProbB, nSV,sv_coef, SVs]。英文說(shuō)明如下:
? ? ? ?-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
????????如果沒(méi)有指定’-b 1’選項(xiàng)則ProbA和ProbB為空矩陣。此外,當(dāng)指定’-v’選項(xiàng)時(shí),返回的model是一個(gè)數(shù)值,是cross-validation的準(zhǔn)確率。
????????其中model.paramter是一個(gè)5X1的向量,model.Parameters參數(shù)意義從上到下依次為:
????????-s svm類型:SVM設(shè)置類型(默認(rèn)0)
????????-t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認(rèn)2)
????????-d degree:核函數(shù)中的degree設(shè)置(針對(duì)多項(xiàng)式核函數(shù))(默認(rèn)3)
????????-g r(gama):核函數(shù)中的gamma函數(shù)設(shè)置(針對(duì)多項(xiàng)式/rbf/sigmoid核函數(shù)) (默認(rèn)類別數(shù)目的倒數(shù))
????????-r coef0:核函數(shù)中的coef0設(shè)置(針對(duì)多項(xiàng)式/sigmoid核函數(shù))((默認(rèn)0)
7)svmpredict函數(shù)參數(shù)說(shuō)明
????????svmpredict函數(shù)返回三個(gè)值:
predict_label,是訓(xùn)練集預(yù)測(cè)得到的label向量。
accuracy,是一個(gè)3維的向量,從上到下分別是:分類準(zhǔn)率(分類問(wèn)題中用到的參數(shù)指標(biāo));平均平方誤差(MSE (mean squared error)) (回歸問(wèn)題中用到的參數(shù)指標(biāo));平方相關(guān)系數(shù)(r2 (squared correlation coefficient))(回歸問(wèn)題中用到的參數(shù)指標(biāo))。
輸出是個(gè)矩陣,包含著決策值或者是概率估計(jì)(當(dāng)’-b 1’被指定時(shí))。當(dāng)訓(xùn)練數(shù)據(jù)有k類時(shí),決策值矩陣是一個(gè)n行k*(k-1)/2列的矩陣(n為測(cè)試數(shù)據(jù)集個(gè)數(shù),k為類別數(shù)),而每一行的輸出是k*(k-1)/2個(gè)二分類器的結(jié)果。當(dāng)’-b 1’被指定時(shí),概率估計(jì)矩陣是一個(gè)n行k類的矩陣(n為測(cè)試數(shù)據(jù)集個(gè)數(shù),k為類別數(shù)),每一行的輸出是該測(cè)試數(shù)據(jù)屬于每個(gè)類的概率。
轉(zhuǎn)載于:https://www.cnblogs.com/lvchaoshun/p/5906889.html
總結(jié)
以上是生活随笔為你收集整理的libSVM在matlab下的使用安装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP 依赖注入,从此不再考虑加载顺序
- 下一篇: Bootstrap的响应式,当文字超过d