网上找到这个总结的不错,你可以借鉴!6 Z; b- ]$ {, G2 e
( q7 z/ ]/ a; V; W, n$ Y" |$ A
在matlab上使用libsvm工具箱使用错误及解决方法汇总
1 F3 h; `) A* G8 Z! o首先附上使用过程
) A2 g" ]: L9 L+ Vstep1: 输入>>mex -setup
* v/ v$ H( d, e% z2 U step2:
( `) R8 M6 Y( y1 `* D0 l6 z Please choose yourcompiler for building external interface (MEX) files:
. W5 _, U0 {5 Z7 S; L Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y
8 x2 q+ h5 a( l! D# q; U step3:7 c0 S: \4 {# M
Select a compiler:5 Y; ?$ u; Q- y* ` [
6 N5 z9 G' E8 ]9 \: H. }, ^6 k' A
' G( c ^5 a" h5 d c [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
) ~* |" _2 D9 L [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 ' Q% c* Q0 Q: ]1 Q4 {' u
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio : A6 H' q# k& G! j/ S! i
[0] None
! v; K) b5 G' ?& q* r [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行
' O. C: s% v& r& ?! {& u 我选择了 【2】
" U7 C+ C z( R" H& a step4:
: d/ c( H( ~1 U Compiler: Microsoft Visual C++ 2008 SP1 / o. p1 ?4 O6 u `3 c4 t8 W5 Y# D
Location:e:\Program Files\Microsoft Visual Studio 9.0 1 \- y. I5 R/ M) M& Y
Are thesecorrect [y]/n? 路径是否正确 是的就选y
5 @* G& k* ]7 `6 r9 G1 |: _ 如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。3 d5 x! b. c. G0 o8 L1 J
Step 5 8 C' I0 }# e6 _' a. R& _ h9 o* h
Make1 C& A0 e" ~, Z4 W* L
后面就是:9 `4 x1 |1 \9 _& t
load heart_scale.mat(此处无分号)5 z+ ?) w4 _8 n& ]; c
train = heart_scale_inst;
b7 S; c0 q4 V' F0 O W/ Xtrain_label=heart_scale_label;
. ]8 i& j3 j1 R( K5 ?5 Y. N6 Ltest=train;3 e4 t/ q/ S8 o$ k' u: y* N
test_label=train_label;& v1 X7 y( g' h1 y7 s
model=svmtrain(train_label,train,'-c 2 -g0.01');. m9 |5 ~% @ B L% ~
[predict_label,accuracy]=svmpredict(test_label,test,model);
& J- p9 D* d( f: r: G1 h1- W- p' y# k5 m8 f9 K- J8 a
make这一步报错! }" i' u$ e" X( j- P
Error using mex (line 206)
) c' |3 M+ G- A. h8 F+ i" `7 hUnable to complete successfully.
) f r( v$ \& U9 ZError in make (line 1)
/ P: z3 E' Y1 W# B% This make.m is for MATLAB and OCTAVE
3 @: O" K# a; D! m# i+ x% Eunder Windows, Mac, and Unix/ _$ \. f9 i7 K9 [
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
1 y, m! l- S9 r! i$ z! k/ Z; G( _$ s. X
2 还有一个make这一步出现的错误3 Make时出错
5 Q. U4 e3 A" [ oUndefined function orvariable 'make'
. l4 e) U0 c/ ^$ Y7 X2 B. u解决方法为:
" l z. z$ p& D设置matlab的path : B6 D! _* Y; |& R7 x% g
方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
0 ?$ ^8 `" m* v" x5 q; f) B还要记得把current folder 设为matlab所在的路径5 r+ F7 D# i& a M$ ^
3 输入load heart_scale.mat;报错+ m |" d2 Y% o! f I6 h
Error using load
- V) ^$ |2 y" k# L. g! LUnable to read file heart_scale.mat;: No
+ K& u( K6 s7 C- e# n: @. E( bsuch file or directory.
9 J- Q6 N. j. \( D0 @3 C$ Y这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
- [1 S% |9 e! v' _% P4
$ T$ u3 y% k# d/ Yload 这一步报错
' @, B1 j! N/ }/ t??? Error using ==>load
0 t- y+ |% E4 X) S2 cNumber of columns on line 2 of ASCII file D:\Program' O5 q' h: y3 X* }
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale- g1 o, `! |7 v9 `* d: ^
must be the same as previous lines.
$ \# n, L8 u9 A; ^/ {2 B3 D官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
* Z. C& D/ {3 ?4 o) Q' r+ W一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
! R$ Q7 K! c/ X- `# N* w使用如下: [label_vector, instance_matrix] =libsvmread('filename');% t4 p* ^ _# P9 r7 h" \% r
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');2 r, W+ w& F; U. W; |
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。
+ P4 [# y7 s4 k6 F, a但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!* ?9 ^+ Z2 _+ f& q+ h0 v) ?6 N' {
/ c4 x5 ~9 E( E1 i0 Q5 _1 W% h, d1 w! H, X! L) n/ I$ _. Z+ P
: H# a6 \- K& n" N! R
- [9 c s. C5 n2 v5 到svmtrain这一步报错
7 q0 Z2 Y1 H. q1 U% u2 R??? Errorusing ==>svmtrain at 172
1 h" ]8 r! E* s. l5 _! E6 d& GGroup mustbe a vector.
" v9 i: l6 p, Z- V1 P8 o是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了: X8 C& ]4 G/ T( V; |! Q( Y+ E
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……