MATLAB 安裝使用libsvm詳細步驟


根據本文后面部分博友提出的在配置過程中出現的問題,其中需要特別強調的一點: 整個過程,都是在 libsvm-3.12\matlab目錄下操作的。如果這一點你忽視了,你不可能解決配置中報的Bug,即使重新安裝matlab也不行。
本文的配置路徑為 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab,從始至終都是在這個目錄下進行的。
當然,你也可以將編譯好的文件拷貝到任何地方,只要你當前的工作目錄中有這四個文件即可。
////////////////////////////
詳細步驟如下:
1.下載libsvm
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
我的matlab版本 R2010a,我的libsvm版本3.12


2.解壓至指定目錄
將libsvm解壓至D:\MATLAB\R2010a\toolbox下,你也可以解壓至你喜歡的地方。

3.設置路徑
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之
下載下來的借口包里有svm的一些源文件,沒有可執行的exe文件,所以,必須先將svmtrain等源文件編譯為matlab可以使用的dll等文件。於是先選擇編譯器,如下: 
4.編譯libsvm
我的編譯器是VC++ 6.0

首先在matlab設置當前目錄為 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之

5.執行編譯
在matlab命令窗口中輸入
mex -setup
顯示
Please choose your compiler for building external interface (MEX) files: 
 
Would you like mex to locate installed compilers [y]/n?

輸入y
Select a compiler: 
[1] Lcc-win32 C 2.4.1 in D:\MATLAB\R2010a\sys\lcc 
[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0 
[3] Microsoft Visual C++ 6.0 in D:\Program Files\Microsoft Visual Studio 
 
[0] None 

Compiler:

需要你選擇編譯器
我輸入的是3 即選擇VC++ 6.0
Please verify your choices: 
 
Compiler: Microsoft Visual C++ 6.0 
Location: D:\Program Files\Microsoft Visual Studio 
 
Are these correct [y]/n?
再次確認自己的選擇,輸入y

Trying to update options file: C:\Users\DELL\AppData\Roaming\MathWorks\MATLAB\R2010a\mexopts.bat 
From template:              D:\MATLAB\R2010a\bin\win32\mexopts\msvc60opts.bat 
 
Done . . . 


編譯器選擇好了之后,用make.m編譯

命令窗口輸入make
可以看到新編譯出4個文件libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之
在命令窗口中輸入
load heart_scale;
此時需注意,libsvm 3.12中提供的是c++版本的數據集heart_scale,這里需要加載matlab版本的數據集。
這兩個數據集有什么不同呢?

C++版本的數據集里面如果某一個樣本的某一個特征為0,這個特征可以不寫在數據集中,但是在matlab版本中,必須要寫出來。
否則的話,會報這樣一個錯誤:
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之
此時你可以選擇下載matlab型的數據集,給一個鏈接。
http://download.csdn.net/detail/boruoshui/4881338
然后讀取數據集
libsvmread('heart_scale');
完成該步驟后發現Workspace中出現了 heart_scale_inst  heart_scale_label,說明正確。
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之
model=svmtrain(heart_scale_label,heart_scale_inst)
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
/////////////////////////////////////////////
本博2014年4月18日添加
部分博友反應
[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
********************重點
命令會報BUG,這是libsvm新的版本對於輸出結果的重新設定。
改為如下命令即可。(老版本不用改變。本文是libsvm-3.12。)
model=svmtrain(heart_scale_label,heart_scale_inst)
[predicted_label, accuracy, decision_values]=svmpredict(heart_scale_label,heart_scale_inst,model)
/////////////////////////////////////////////
MATLAB 安裝使用libsvm詳細步驟(附圖) - 求之不得,不求得之 - 求之不得,不求得之
 
證明libsvm安裝成功,可以進行其他的實驗了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM