libsvm工具箱会和matlab,MATLAB实现多分类和libsvm工具箱的安装使用详解
首先告訴大家MATLAB現(xiàn)在可以實(shí)現(xiàn)多類分類的問(wèn)題!但是需要借助工具箱!
下面介紹的是臺(tái)灣林智仁教授的libsvm工具箱在MATLAB中的安裝和使用:
安裝環(huán)境:Win7、Microsoft Visual Studio 2010
MATLAB版本:R2010b
libsvm版本:libsvm-3.17.zip?? 下載地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
編譯器版本:Microsoft Visual C++ 2010
安裝過(guò)程:
1、可以去http://www.csie.ntu.edu.tw/~cjlin/libsvm/這個(gè)網(wǎng)站去下載最新的SVM軟件,找到Download LIBSVM,點(diǎn)擊zip file下載,這里有我們常用的matlab語(yǔ)言平臺(tái)。解壓縮打開(kāi)其中的matlab文件夾下的README文件,可以看到在matlab下該怎么編譯它。解壓后可以放在任意目錄下,但是最好放在MATLAB工具箱中,比如 C:\Program Files\MATLAB\R2011b\toolbox\libsvm-3.17。其中C:\Program Files\MATLAB\R2011b\要替換成你的MATLAB安裝的位置目錄,toolbox文件夾中存放的就是各種工具箱!題外話~
2、打開(kāi) matlab,找到Current Folder,點(diǎn)擊旁邊的...彈出對(duì)話框,切換進(jìn)入到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,選擇自定義的編譯器
%出現(xiàn)以下選項(xiàng)(因電腦而異)
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???? %可以用其他的,出現(xiàn)以下提示語(yǔ)句
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
%編譯器默認(rèn)路徑,確認(rèn)正確輸入y,更改路徑,輸入n
%輸入y出現(xiàn)再次確認(rèn)
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、對(duì)C++文件進(jìn)行編譯
%輸入命令
>> make?? %可能不成功,通常是路徑問(wèn)題,不成功的話參考這個(gè)鏈接:http://www.ilovematlab.cn/forum.php?ext=CB&mod=viewthread&pre_pos=7&pre_thread_id=170608&reltid=233513&tid=217493
>>
%編譯完成
%如果make命令成功執(zhí)行,那么你已經(jīng)成功安裝上libsvm了!
系統(tǒng)就會(huì)生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件(對(duì)于 Matlab 7.1以下的版本,生成的對(duì)應(yīng)文件為svmtrain.dll,svmpredict.dll和 read_sparse.dll,沒(méi)做測(cè)試),然后可以在matlab的菜單 File->Set Path->add with subfolders(可直接用Add Folder)里,把 C:\Program Files\MATLAB\R2011a\toolbox\libsvm-3.17\matlab目錄添加進(jìn)去,這樣以后在任何目錄下都可以調(diào)用 libsvm的函數(shù)了。
4、運(yùn)行一下(應(yīng)該會(huì)報(bào)錯(cuò),請(qǐng)看注意那里)
為了檢驗(yàn)libsvm和matlab之間的接口是否已經(jīng)配置完成,可以在matlab下執(zhí)行以下命令:
>> load heart_scale
%完成該步驟后發(fā)現(xiàn)Workspace中出現(xiàn)了heart_scale_inst和 heart_scale_label,說(shuō)明正確。
>> 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
如果運(yùn)行正常并生成了model這個(gè)結(jié)構(gòu)體(其中保存了所有的支持向量及其系數(shù)),那么說(shuō)明libsvm和matlab之間的接口已經(jīng)完全配置成功。
注意:坑爹啊!
如果你的matlab報(bào)錯(cuò)提示沒(méi)有 heart_scale.mat(因?yàn)楣俜浆F(xiàn)在不提供了(老版本提供的),給的都是VC++下的格式,所以load 會(huì)報(bào)錯(cuò):heart_scale must be same as previous lines)
所以必須使用給的一個(gè)函數(shù),轉(zhuǎn)化數(shù)據(jù)此函數(shù)為libsvmread()
使用如下: [label_vector, instance_matrix] = libsvmread('filename');
此處為了跟官方統(tǒng)一名稱可以[heart_scale_label,heart_scale_inst] = libsvmread('heart_scale');
由于heart_scale在libsvm-3.11目錄下,不是在matlab下,所以直接用libsvmread命令會(huì)報(bào)錯(cuò),要買改變當(dāng)前路徑,或者使用[heart_scale_label,heart_scale_inst] = libsvmread('../heart_scale');????? %../代表返回上層路徑。
libsvm的使用方法:很簡(jiǎn)單就用下面的兩條語(yǔ)句!
>> 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()函數(shù)用來(lái)訓(xùn)練svm分類器,svmpredict()函數(shù)用來(lái)預(yù)測(cè)分類結(jié)果。
model用來(lái)保存分類器的信息!
svmtrain()函數(shù)的第一個(gè)參數(shù)是訓(xùn)練樣本的類別矩陣(分類結(jié)果),第二個(gè)參數(shù)是訓(xùn)練樣本的特征矩陣(屬性),第三個(gè)參數(shù)是可選的,它有很多個(gè)參數(shù),各有各的用途,具體可參考下面的鏈接。
svmpredict()函數(shù)的第一個(gè)參數(shù)是測(cè)試樣本的類別矩陣(真實(shí)結(jié)果,也可以自己先隨便假設(shè)一個(gè)結(jié)果,沒(méi)關(guān)系的),第二個(gè)參數(shù)是測(cè)試樣本的特征矩陣(屬性),第三個(gè)參數(shù)是分類器的模型,即model。
預(yù)測(cè)結(jié)果保存在predict_label中!分類正確率保存在accuracy中!精度信息保存在dec_values中!
請(qǐng)注意:heart_scale_label矩陣的維數(shù)和heart_scale_inst矩陣的維數(shù)必須一樣,否則可能會(huì)報(bào)錯(cuò)。
如果你安裝和使用過(guò)程中還有問(wèn)題,請(qǐng)參考下面的鏈接,相信能找到你需要的東西!
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
總結(jié)
以上是生活随笔為你收集整理的libsvm工具箱会和matlab,MATLAB实现多分类和libsvm工具箱的安装使用详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jetty部署多个web应用及将jett
- 下一篇: matlab 常用m文件,MATLAB基