根據本文后面部分博友提出的在配置過程中出現的問題,其中需要特別強調的一點:
整個過程,都是在 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.設置路徑
下載下來的借口包里有svm的一些源文件,沒有可執行的exe文件,所以,必須先將svmtrain等源文件編譯為matlab可以使用的dll等文件。於是先選擇編譯器,如下:
4.編譯libsvm
我的編譯器是VC++ 6.0
首先在matlab設置當前目錄為 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab
5.執行編譯
在matlab命令窗口中輸入
mex -setup
顯示
////////////////////////////
詳細步驟如下:
1.下載libsvm
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
我的matlab版本 R2010a,我的libsvm版本3.12
2.解壓至指定目錄
將libsvm解壓至D:\MATLAB\R2010a\toolbox下,你也可以解壓至你喜歡的地方。
3.設置路徑

4.編譯libsvm
我的編譯器是VC++ 6.0
首先在matlab設置當前目錄為 D:\MATLAB\R2010a\toolbox\libsvm-3.12\matlab

在matlab命令窗口中輸入
mex -setup
顯示
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n?
輸入y
輸入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
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
命令窗口輸入make
可以看到新編譯出4個文件libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32
在命令窗口中輸入 load heart_scale;
此時需注意,libsvm 3.12中提供的是c++版本的數據集heart_scale,這里需要加載matlab版本的數據集。
這兩個數據集有什么不同呢?
C++版本的數據集里面如果某一個樣本的某一個特征為0,這個特征可以不寫在數據集中,但是在matlab版本中,必須要寫出來。
否則的話,會報這樣一個錯誤:
此時你可以選擇下載matlab型的數據集,給一個鏈接。
http://download.csdn.net/detail/boruoshui/4881338
然后讀取數據集
libsvmread('heart_scale');
完成該步驟后發現Workspace中出現了 heart_scale_inst 和 heart_scale_label,說明正確。
再次確認自己的選擇,輸入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

在命令窗口中輸入
此時需注意,libsvm 3.12中提供的是c++版本的數據集heart_scale,這里需要加載matlab版本的數據集。
這兩個數據集有什么不同呢?
C++版本的數據集里面如果某一個樣本的某一個特征為0,這個特征可以不寫在數據集中,但是在matlab版本中,必須要寫出來。
否則的話,會報這樣一個錯誤:

http://download.csdn.net/detail/boruoshui/4881338
然后讀取數據集
libsvmread('heart_scale');
完成該步驟后發現Workspace中出現了 heart_scale_inst 和 heart_scale_label,說明正確。

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)
/////////////////////////////////////////////
證明libsvm安裝成功,可以進行其他的實驗了。

證明libsvm安裝成功,可以進行其他的實驗了。