|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
! J+ j) N( ^& V* q
* _$ N6 d9 \$ f# ?: q首先附上使用过程
1 L0 c- n% P1 N4 f- z# r' J9 ]
- u9 z }$ f: h- K' S5 G3 \' t8 f step1: 输入>>mex -setup
/ ^8 x. I- w! P5 x& H step2:( \( d5 N& v! y4 ]! L* v
Please choose your compiler for building external inteRFace (MEX) files: ' ], V9 W, J0 _) u
Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器 可以选y
$ ]/ H" m5 W3 m- y% A step3:2 e5 \" }% S8 C: ~ M
Select a compiler: " w( ~/ o# R# O
[1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
- z$ ?! ?5 R2 D, I Z) C$ n# T( G3 |3 [ [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 1 e$ Z7 I, N- G
[3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
7 R& E# k: u: U! T [0] None
$ T3 `: w& U" Y [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 . r* S9 R& {' A
我选择了 【2】
' V- z0 N$ R2 ?4 _- D. _# ?& F8 \ step4:
2 Z! d, \8 N! W0 b Compiler: Microsoft Visual C++ 2008 SP1
. _: n: _) J& o Location: e:\Program Files\Microsoft Visual Studio 9.0
& v) F6 z% k R: x) | Are these correct [y]/n? 路径是否正确 是的就选y 9 u ^; N& y) v9 C3 r! r1 X' o3 W
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
7 C$ }) t0 a1 m/ |, L9 E/ d& {0 K
7 ?6 n6 ]2 F7 N' n" K3 s+ BStep 5
g) @/ L+ w. t5 c
# ?. e N( k1 l7 ]( L |$ CMake' u* Q% Y% N, g1 c
2 Z8 U% y& s8 j1 `- i0 ^
后面就是:. M1 |/ E. t# F2 M3 M
* ]% p; i& G) N5 v; U3 T3 uload heart_scale.mat(此处无分号)
4 }6 X2 h+ g; \; ?
( z# B/ ?. @1 r6 L$ s# d0 F1 Mtrain = heart_scale_inst;& ^" l; C- A/ {6 z D# B
9 D# C2 M, U. D4 k1 G/ Utrain_label=heart_scale_label;
( w/ }+ c" q3 i# s3 u# w; I! _1 w* I( }% w
test=train;% V' l9 _9 _( o y$ ^2 @- P$ E
1 o' X8 J9 M" w) ~; x( Ttest_label=train_label;
: q$ B9 w2 l, t3 O
# K( L1 C" T% W- @model=svmtrain(train_label,train,'-c 2 -g 0.01');
* w; O1 s9 a; D S% [6 e8 T1 y
3 o2 b. Y- y+ U8 \) D[predict_label,accuracy]=svmpredict(test_label,test,model);
! Z: x# y! g, p, l
2 @. h7 X2 t/ G6 x5 E5 {4 [* ^7 z! ^- c0 C4 P
) X) a H3 Z6 f& R4 G, L8 \4 N3 }
18 ?: J; m# z; K# a# h6 t9 e
4 c0 b9 O4 ^* j1 S4 G) f; B
make这一步报错
4 t, L" W9 F! F# n8 T& P
6 e* B% q: ], [8 Y- NError using mex (line 206)# f* u; x9 c$ w; V
) Y# _9 |0 k* d' V/ D1 v6 \Unable to complete successfully.
# E' ]3 o/ A! m; y- u1 _" R- D u
" J( }* t# m4 f- K k- S* g% n. vError in make (line 1)
6 Y* U6 a5 T9 G! e i) a0 S0 u- Y, x/ l; T
% This make.m is for MATLAB and OCTAVE& G- d3 |& s: c) P; L! a* q/ L0 `4 p
- N. ~# P3 |& k4 c' N+ }
under Windows, Mac, and Unix
. Y5 s6 G# I3 a, I3 P8 O ^" x& q5 `; G+ P8 W; ^
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~* [7 {' D3 H+ Y# v* ?
, }# U$ s7 R8 u! K
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/* J9 n8 I% T2 \ f1 f$ ?! |& _
6 b! I! f' R+ j3 Y2 d+ Q1 Z K4 Y( y: i+ K4 M" J! r
( v5 Y% s+ | H# ?2 还有一个make这一步出现的错误
+ N8 A8 D0 S9 ^$ @3 I/ \9 u3 Y8 q) V& U
Undefined function or variable 'make'
% u! z% V/ @: E: I- \+ ]& i1 @! Q( s) L, r
解决方法为:
6 q" o9 F5 s, \4 q2 i' }- a6 s4 S t$ w) v/ I# o+ y/ R, _6 V _2 u
设置matlab的path
& a' q! l# N* c& l( v6 s
% R& U) Q* D2 }3 l' w. J 方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)( J) `% }0 H- Y1 R4 ]6 b/ A/ w2 _
1 J8 W( Z5 B9 H8 z, [" Q3 }" T$ h+ x
还要记得把current folder 设为matlab所在的路径+ Q2 X; ]: o: C
u) M# c+ u- j. j" f9 f1 C, E" ^
3 输入load heart_scale.mat;报错
$ d6 z' D A% D( r& |* @3 i8 G O* u5 b' E1 _
Error using load, ~- D8 {" L* [- ]' K' r1 v
0 i6 m0 X4 f- M+ j" o: o5 n% q) @3 @Unable to read file heart_scale.mat;: No4 s* j8 H3 m c8 C( Y* e
! K$ j1 I+ [/ s* nsuch file or directory.; Y. M7 I9 A, P# T( m! H
; n5 T+ a5 Y9 o' l4 S2 ]1 w
这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
x1 \5 |+ m2 b& e; D' R) M. r7 e2 N3 j# d5 l; Z9 H& }8 R& X
41 C3 z' ` ]2 x
. m( t: E3 j/ r2 Z9 cload 这一步报错
9 _' B, l: T& ^+ [# P. j. o. h2 o0 K- p, E6 k8 L N$ I
??? Error using ==> load
1 h' V* H' ~! c1 i6 Q" INumber of columns on line 2 of ASCII file D:\Program3 b) c7 ?* X! `0 \5 O" r1 M
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale7 d$ V/ t; I3 Y, L5 O
must be the same as previous lines.# A# Z2 q {: g) f% k- V: Q# X
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines). r3 {/ p. a+ ^% u
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
# v; H+ g9 p) w: p# S9 h使用如下: [label_vector, instance_matrix] =libsvmread('filename');
, y) E& S( C! L" D2 ~+ s" ?此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
. i/ s1 Q$ n8 f0 S8 W/ r4 |# Z注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。1 T3 h! X6 s# g* a& s& C; y5 j
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!! M9 g+ ^; _( M$ r) j C- I+ y$ f
我把需要的mat文件分享在我的网盘中了2 G& J1 I; v7 f' T- {7 ]
http://pan.baidu.com/share/link?shareid=127727&uk=21652376620 L; d* c/ A' ^9 q
7 O8 D0 x) Z, n* ?# A3 ~+ [1 o" j" y' V) m0 I
( ?5 f! Q( b8 R7 t% R
+ Y/ V: i4 |2 I; g7 ` c
5 到svmtrain这一步报错
, z& K9 O# g# w% f9 K; [ R0 n7 \+ X; p& ^6 R
??? Errorusing ==> svmtrain at 1729 N" Q7 R4 I5 L& m: o# u: C( ]
( Z+ {0 T! f( q1 w2 h0 FGroup mustbe a vector.$ H, B" g8 e* B" r, K
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
. k+ ]+ N8 N0 ?" C1 Y3 \/ U0 q! w- f& z' C7 \
5 {: d; b: e5 u* x6 W! z& n
9 [5 @# f* W3 Z; H- S在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……: ~) @& i0 v& Y3 T: a5 l$ N
) z- p. T1 {# n
真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^, B( S1 ~0 Z3 _6 ?% K" J- e, I
8 v. W+ N0 h4 y& @, P- F& d. f5 i' w" H. u. o8 q G
) g6 [- U0 z3 Z( f
0 Z$ r# k' K8 y
- _4 |2 H: M4 T) Q' T1 e8 |% `
|
|