在matlab上使用libsvm工具箱使用錯(cuò)誤及解決方法匯總
綜述
LIBSVM是臺(tái)灣大學(xué)林智仁(Lin Chih-Jen)教授等開(kāi)發(fā)設(shè)計(jì)的一個(gè)簡(jiǎn)單、易于使用和快速有效的SVM模式識(shí)別與回歸的軟件包,他不但提供了編譯好的可在Windows系列系統(tǒng)的執(zhí)行文件,還提供了源代碼,方便改進(jìn)、修改以及在其它操作系統(tǒng)上應(yīng)用;該軟件對(duì)SVM所涉及的參數(shù)調(diào)節(jié)相對(duì)比較少,提供了很多的默認(rèn)參數(shù),利用這些默認(rèn)參數(shù)可以解決很多問(wèn)題;并提供了交互檢驗(yàn)(Cross Validation)的功能。該軟件可以解決C-SVM、ν-SVM、ε-SVR和ν-SVR等問(wèn)題,包括基于一對(duì)一算法的多類(lèi)模式識(shí)別問(wèn)題。
使用過(guò)程
step1: 輸入>>mex -setup step2: Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installed compilers [y]/n? 是否讓matlab自動(dòng)檢測(cè)編譯器 可以選y
step2: Select a compiler: [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio [0] None [1]matlab 自帶的不能用 其他的如果有的話(huà) 就相應(yīng)的選擇就行
我選擇了 【2】
step3: Compiler: Microsoft Visual C++ 2008 SP1
Location: e:\Program Files\Microsoft Visual Studio 9.0 Are these correct [y]/n? 路徑是否正確 是的就選y 如果沒(méi)有自動(dòng)檢測(cè)出來(lái)依次的話(huà)step2就選【n】就可以,再順著提示下來(lái)。
Step 4
Make
step5:
load heart_scale.mat(此處無(wú)分號(hào))
train = heart_scale_inst;
train_label=heart_scale_label;
test=train;
test_label=train_label;
model=svmtrain(train_label,train,'-c 2 -g 0.01');
[predict_label,accuracy]=svmpredict(test_label,test,model);
錯(cuò)誤記錄
1
make這一步報(bào)錯(cuò)
Error using mex (line 206)
Unable to complete successfully.
Error in make (line 1)
% This make.m is for MATLAB and OCTAVE
under Windows, Mac, and Unix
在嘗試了許多方法后,竟然是換了低版本的libsvm,搞定了~~~
另:Libsvm各個(gè)版本www.csie.ntu.edu.tw/~cjlin/libs…
2 還有一個(gè)make這一步出現(xiàn)的錯(cuò)誤
Undefined function or variable 'make'
解決方法為:
設(shè)置matlab的path
方法file->set path->set sub path(為什么要sub path因?yàn)橹挥羞@樣才能將你要加的文件目錄的子文件都加進(jìn)去,否則只是加了你所要加的那個(gè)目錄。)
還要記得把current folder 設(shè)為matlab所在的路徑
3 輸入load heart_scale.mat;報(bào)錯(cuò)
Error using load
Unable to read file heart_scale.mat;: No
such file or directory.
這個(gè)問(wèn)題是這樣的,不應(yīng)該有最后那個(gè); 去掉分號(hào)就可以了。。。(粗心所致。。。不知道別人會(huì)不會(huì)像我這樣。。。)
4
load 這一步報(bào)錯(cuò)
??? Error using ==> load Number of columns on line 2 of ASCII file D:\Program Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale must be the same as previous lines. 官方現(xiàn)在不給heart_scale.mat,給的都是VC++下的格式。一些舊版本的工具箱還可以找到mat文件,新版本都沒(méi)有了。所以load會(huì)報(bào)錯(cuò):heart_scalemust be same as previous lines) 一種解決方法是:使用給的一個(gè)函數(shù),轉(zhuǎn)化數(shù)據(jù)。此函數(shù)為libsvmread() 使用如下: [label_vector, instance_matrix] =libsvmread('filename'); 此處為了跟官方統(tǒng)一名稱(chēng)可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale'); 注意:由于heart_scale在libsvm-3.11目錄下,不是在matlab下,所以直接用libsvmread命令會(huì)報(bào)錯(cuò),要買(mǎi)改變當(dāng)前路徑,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上層路徑。 但是最簡(jiǎn)單的方法是,找到舊版本工具箱的mat文件添加上即可! 我把需要的mat文件分享在我的網(wǎng)盤(pán)中了 pan.baidu.com/share/link?…
5 到svmtrain這一步報(bào)錯(cuò)
??? Errorusing ==> svmtrain at 172
Group mustbe a vector. 是因?yàn)樵谔砑庸ぞ呦涞臅r(shí)候沒(méi)有添加完全,file-Set Path-Add with Subfold ...添加好路徑就可以了
在使用過(guò)程中到目前只遇到這些錯(cuò)誤~現(xiàn)在也只是會(huì)簡(jiǎn)單的用libsvm工具箱……
MATLAB
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。