libsvm工具箱会和matlab,MATLAB实现多分类和libsvm工具箱的安装使用详解
首先告訴大家MATLAB現在可以實現多類分類的問題!但是需要借助工具箱!
下面介紹的是臺灣林智仁教授的libsvm工具箱在MATLAB中的安裝和使用:
安裝環境:Win7、Microsoft Visual Studio 2010
MATLAB版本:R2010b
libsvm版本:libsvm-3.17.zip?? 下載地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
編譯器版本:Microsoft Visual C++ 2010
安裝過程:
1、可以去http://www.csie.ntu.edu.tw/~cjlin/libsvm/這個網站去下載最新的SVM軟件,找到Download LIBSVM,點擊zip file下載,這里有我們常用的matlab語言平臺。解壓縮打開其中的matlab文件夾下的README文件,可以看到在matlab下該怎么編譯它。解壓后可以放在任意目錄下,但是最好放在MATLAB工具箱中,比如 C:\Program Files\MATLAB\R2011b\toolbox\libsvm-3.17。其中C:\Program Files\MATLAB\R2011b\要替換成你的MATLAB安裝的位置目錄,toolbox文件夾中存放的就是各種工具箱!題外話~
2、打開 matlab,找到Current Folder,點擊旁邊的...彈出對話框,切換進入到C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.12\matlab目錄下,在命令窗口中鍵入以下命令:
>> mex -setup
%命令窗口顯示
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n??n??? %這次是選擇編譯器,輸入n,選擇自定義的編譯器
%出現以下選項(因電腦而異)
Select a compiler:
[1] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[2] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[3] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker)
[4] Lcc-win32 C 2.4.1
[5] Microsoft Visual C++ 6.0
[6] Microsoft Visual C++ 2005 SP1
[7] Microsoft Visual C++ 2008 SP1
[8] Microsoft Visual C++ 2010
[9] Microsoft Visual C++ 2010 Express
[10] Open WATCOM C++
[0] None
Compiler:?8???? %可以用其他的,出現以下提示語句
Your machine has a Microsoft Visual C++ 2010 compiler located at
C:\Program Files\Microsoft Visual Studio 10.0. Do you want to use this compiler [y]/n? y
%編譯器默認路徑,確認正確輸入y,更改路徑,輸入n
%輸入y出現再次確認
Please verify your choices:
Compiler: Microsoft Visual C++ 2010
Location: C:\Program Files\Microsoft Visual Studio 10.0
Are these correct [y]/n? y
Trying to update options file: C:\Documents and Settings\zhangduokun\Application Data\MathWorks\MATLAB\R2011a\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2011a\bin\win32\mexopts\msvc100opts.bat
Done . . .
%編譯器配置完成
3、對C++文件進行編譯
%輸入命令
>> make?? %可能不成功,通常是路徑問題,不成功的話參考這個鏈接:http://www.ilovematlab.cn/forum.php?ext=CB&mod=viewthread&pre_pos=7&pre_thread_id=170608&reltid=233513&tid=217493
>>
%編譯完成
%如果make命令成功執行,那么你已經成功安裝上libsvm了!
系統就會生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件(對于 Matlab 7.1以下的版本,生成的對應文件為svmtrain.dll,svmpredict.dll和 read_sparse.dll,沒做測試),然后可以在matlab的菜單 File->Set Path->add with subfolders(可直接用Add Folder)里,把 C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.17\matlab目錄添加進去,這樣以后在任何目錄下都可以調用 libsvm的函數了。
4、運行一下(應該會報錯,請看注意那里)
為了檢驗libsvm和matlab之間的接口是否已經配置完成,可以在matlab下執行以下命令:
>> load heart_scale
%完成該步驟后發現Workspace中出現了heart_scale_inst和 heart_scale_label,說明正確。
>> 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);
%Accuracy = 86.6667% (234/270) (classification)
%done
如果運行正常并生成了model這個結構體(其中保存了所有的支持向量及其系數),那么說明libsvm和matlab之間的接口已經完全配置成功。
注意:坑爹啊!
如果你的matlab報錯提示沒有 heart_scale.mat(因為官方現在不提供了(老版本提供的),給的都是VC++下的格式,所以load 會報錯:heart_scale must be same as previous lines)
所以必須使用給的一個函數,轉化數據此函數為libsvmread()
使用如下: [label_vector, instance_matrix] = libsvmread('filename');
此處為了跟官方統一名稱可以[heart_scale_label,heart_scale_inst] = libsvmread('heart_scale');
由于heart_scale在libsvm-3.11目錄下,不是在matlab下,所以直接用libsvmread命令會報錯,要買改變當前路徑,或者使用[heart_scale_label,heart_scale_inst] = libsvmread('../heart_scale');????? %../代表返回上層路徑。
libsvm的使用方法:很簡單就用下面的兩條語句!
>> 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);
其中:
svmtrain()函數用來訓練svm分類器,svmpredict()函數用來預測分類結果。
model用來保存分類器的信息!
svmtrain()函數的第一個參數是訓練樣本的類別矩陣(分類結果),第二個參數是訓練樣本的特征矩陣(屬性),第三個參數是可選的,它有很多個參數,各有各的用途,具體可參考下面的鏈接。
svmpredict()函數的第一個參數是測試樣本的類別矩陣(真實結果,也可以自己先隨便假設一個結果,沒關系的),第二個參數是測試樣本的特征矩陣(屬性),第三個參數是分類器的模型,即model。
預測結果保存在predict_label中!分類正確率保存在accuracy中!精度信息保存在dec_values中!
請注意:heart_scale_label矩陣的維數和heart_scale_inst矩陣的維數必須一樣,否則可能會報錯。
如果你安裝和使用過程中還有問題,請參考下面的鏈接,相信能找到你需要的東西!
http://zhan.renren.com/nvzuiqiang?gid=3602888498034633874&checked=true
http://www.ilovematlab.cn/forum.php?ext=CB&mod=viewthread&pre_pos=7&pre_thread_id=170608&reltid=233513&tid=217493
http://blog.sina.com.cn/s/blog_4cf8aad30100nr2k.html
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=61234
http://blog.sina.com.cn/s/blog_4fe347e60101h5uz.html
http://www.ilovecode.cn/index.php/news/show/id/128
http://blog.sina.com.cn/s/blog_64b046c701018dya.html
總結
以上是生活随笔為你收集整理的libsvm工具箱会和matlab,MATLAB实现多分类和libsvm工具箱的安装使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jetty部署多个web应用及将jett
- 下一篇: matlab人脸追踪,求大神帮助我这个菜