|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
. i/ t; S9 ?; U! y; R) y( `1 J* D
首先附上使用过程9 U1 F' q6 d8 V( ?
5 B. U2 g: i" m9 P, U
step1: 输入>>mex -setup/ P+ d. F$ ` y7 z2 L
step2:
" K& k T& F# ? b: N Please choose your compiler for building external inteRFace (MEX) files:
2 }0 x3 {0 x! c, g/ r( U | Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器 可以选y$ _7 x, u3 }1 R+ p; t5 S5 ?. I
step3:( _6 V f. O6 _5 p
Select a compiler:
; w u" M, P3 B s) C+ A2 ? [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
% e- C/ v3 x7 P! ~" k! J2 P [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 X9 x/ Q) z3 j, V3 R0 M5 l/ h1 Y
[3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
; q e4 k, j4 Z+ ^+ o. u p6 l* L [0] None ! v$ K+ Y& K& d$ |
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行
2 g& d* Q1 o; P( h3 O l7 N 我选择了 【2】: w' |# ]) a% @: w; H
step4:8 K) t+ J" v: w. }' Q& K
Compiler: Microsoft Visual C++ 2008 SP1
" D( j4 F* A4 a: Y. M4 c Location: e:\Program Files\Microsoft Visual Studio 9.0
; d5 H) Y/ }+ }3 J6 c. h# l1 z Are these correct [y]/n? 路径是否正确 是的就选y
0 p1 E, R5 ^( x" H y+ N 如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。/ c8 [* p0 C9 X3 T( ]
5 `: \. E4 y i- PStep 5
# j S! S" F6 b9 D9 c0 W! X- l$ Z% B N
Make0 N* H. \+ ^$ c# D
: s) c* L+ j: K* ?! S* q O后面就是:
1 p9 U& b* G. t3 R( S- }% F0 k1 H; B* S$ J! O k& }8 p
load heart_scale.mat(此处无分号)6 n( {8 E2 Y2 z# e
$ |- d$ `: L& N% B. ?0 W
train = heart_scale_inst;
+ C- h8 j. e: U* \
) y- ~* i0 J6 x. I+ Ctrain_label=heart_scale_label;1 [& k6 T: h* f9 Z& P
8 h9 I, c4 [! Q4 R- H& i
test=train;
* g% w. O# h' p% l( ~; D& C3 {. A9 _
test_label=train_label;4 ?& t' ~8 v" l/ B! m9 ^
; `1 b9 q4 h& v- w
model=svmtrain(train_label,train,'-c 2 -g 0.01');" [- V' O& C o# q
- |, n, @7 \- o2 O5 G
[predict_label,accuracy]=svmpredict(test_label,test,model);
: Y$ [) a) ?" Z; R8 y2 w$ q5 w- w
% J% V3 C& g3 o- f
( x4 k4 {& |0 h+ H+ J8 \7 Q% V
1, l( T5 O3 P6 U% s
* a D2 s! X d( M! [' `make这一步报错0 o$ |8 p9 W" L( X( u l, E
% }, X0 n" J$ G/ X* S1 R: W
Error using mex (line 206)/ d" o" g7 ~8 h- C
. G% F$ f* z$ O( b
Unable to complete successfully.
& k2 b# r9 V- a# P7 b; \' J8 j) n1 f( w7 g8 L+ `2 C9 Q
Error in make (line 1)
2 u Z5 r5 V A& g/ N6 k, u' Q0 y8 @
% This make.m is for MATLAB and OCTAVE& B8 v4 X+ @. i$ u9 ]( p- i1 s
% ^+ k# m/ W) v3 w: nunder Windows, Mac, and Unix8 T7 ?: s" S8 _$ O
) Y$ G7 C B! P/ Q* Q在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~& W( C3 M4 u3 h/ ?
0 }% [6 ]/ `) F7 y
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/
' @! o2 t; s3 a- h1 A# `
|! |, |$ y( H" ^
* y) v6 Z* E/ c7 U4 j& D: ^
; `# q/ P4 O/ O0 Q, \2 还有一个make这一步出现的错误1 \! Y% t7 C, Y. |
0 k7 X3 f& B2 G1 p4 F0 BUndefined function or variable 'make'
' ], r5 x3 v+ k9 V. c
5 N2 P$ h6 o w解决方法为:
& X# m7 Y- [ f8 R8 q! ^
1 A3 a1 Q/ M' q1 p- Y. h$ J* e设置matlab的path 0 J* X" s3 p" k. C6 j
% }& q8 q: E$ e2 }0 G; E! v 方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)( n5 ]2 z$ T7 w t$ {% `
/ y3 c2 e. _& c( @: J* Z; ]还要记得把current folder 设为matlab所在的路径
+ \& D$ j1 y( L4 t5 c1 S9 v2 L; b/ v4 q( a
3 输入load heart_scale.mat;报错$ m7 D; [- G6 s7 K) l h. x
9 W9 @( Y0 r; v! }& K- D* {Error using load3 N' Z6 I9 Y* ?( k
$ W5 N0 k: x, g; h; i% [& I' ^4 v9 \
Unable to read file heart_scale.mat;: No. t; R$ O( U' [) B
! h) C9 g! o0 k/ M! msuch file or directory.
" i) y1 U' _2 O P
, B. d. r- ]: z x! S" g2 w, t ~这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)& x' d+ E* x$ Y" `$ I
% X+ }% l3 i0 G4 O" Q42 Y# ]; Z0 S+ y9 `
2 A8 [, o z8 W3 A/ S! p: f+ d
load 这一步报错
" ?( ?9 F2 {: c5 ?2 w9 N% V" c. u/ w9 z
??? Error using ==> load
$ z3 I4 Y9 v& zNumber of columns on line 2 of ASCII file D:\Program
& p& P6 t0 O; K8 kFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
( `) z1 n3 [/ n9 d" i/ smust be the same as previous lines.
9 b! _4 `) j- i官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)' E$ G( |* l! ~
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
5 r. L/ q2 Q; C1 O, ~使用如下: [label_vector, instance_matrix] =libsvmread('filename');/ ^" T& g/ o& S3 |2 R0 _, i$ i
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
9 e; J7 q* ~0 S注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
. e' R% @% Y" h/ |+ a' X9 F' g但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
( s/ i5 q9 z1 O' ?: W) v- u我把需要的mat文件分享在我的网盘中了
7 @+ g2 Q7 X" E1 J. ghttp://pan.baidu.com/share/link?shareid=127727&uk=2165237662
% b8 k/ N& L2 L* x! w Q- j- B' P$ l8 x- D
2 h" u, w( s& q$ O+ b
I1 q% Z' Y+ i' y8 K$ r* Q5 r3 t3 C5 v4 \# z
5 到svmtrain这一步报错
% K6 d! L! [! a: V3 z" A6 c5 q6 E: y/ N$ v- B7 l
??? Errorusing ==> svmtrain at 172
1 a: I- Q1 S% p1 g" X3 K' O! z! s) _
Group mustbe a vector.( z1 o4 Z, R7 W0 n: A
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
3 I* Z- i& V. ]7 `
: n- @5 J0 S1 u: K/ _3 o- f
9 l- |8 D0 ]" i. j6 @( d
- ?5 G5 e# a8 C7 A" A- a& i( }; m在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……, P. f0 E9 P& ?: j' k. j
& X7 j' u7 z4 j" I8 j% G7 E
真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^$ ~4 [* ~: r. ~- y; V
3 R$ t# g8 i1 K8 S: Q0 }$ s- E! e) p3 ~ U$ @
& a. n: s W- `$ f, K5 B8 R( e) p/ I# D9 S# g( l& T
; _( M+ {9 [' G- ]+ ^1 u |
|