|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
4 Z7 F3 J* k: N# f
# N* {3 P1 v$ x0 T: ?1 k% I首先附上使用过程8 u. N c; K4 v
$ Y! n! n7 |4 j& m7 j step1: 输入>>mex -setup- }" H- p. y5 W6 I
step2:
5 j9 i) Z4 a% r/ ~ Please choose your compiler for building external inteRFace (MEX) files:
( P1 r3 x Q8 ?8 C9 q Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器 可以选y5 g* [3 s/ @- p( @
step3:
9 H( t$ ^5 L, Z& [4 ]# K( `8 } Select a compiler: # P' Z; Q$ x+ a; Q, _
[1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
8 b0 x2 `: p8 w# z a% P6 I [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
! T1 S; ^4 w9 _" n2 [; T [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
/ H/ f( E9 P5 Z3 F. r' F [0] None ) l* v- K1 d! A# {$ {( g" J) R U
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 2 ~7 f- _6 B" t" _! Z4 X
我选择了 【2】& U$ e% I5 J* W! L
step4:
. `, n3 Z2 ]+ ]; N0 G Compiler: Microsoft Visual C++ 2008 SP1
0 U# K2 c9 }- M ^ Location: e:\Program Files\Microsoft Visual Studio 9.0
. ?7 l% `6 `5 s d Are these correct [y]/n? 路径是否正确 是的就选y 0 g* r- Q# t6 N
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
# x5 G( }- t$ e8 D# h2 D0 p, J, f/ x! U6 z+ | |
Step 5
! m. d* M& R9 l, J/ B
+ r2 `7 i' s. ~: g$ ~( F) i9 RMake N! @$ W- g/ A2 J, R
$ K2 M4 s C3 `; C后面就是:: T% s+ W! f, B3 C& I
" T6 |5 J# Q1 j" y+ A/ ] Mload heart_scale.mat(此处无分号)
- o( B) q& s" R- o$ J! B+ r
" C* ], _3 d) ktrain = heart_scale_inst;
W- h. \6 X4 b4 t! U- `0 x
* G5 J s2 W% B8 b/ v& { J# A Otrain_label=heart_scale_label;$ _6 f3 Q0 u; Y9 `7 b) M3 X" V. G( [
% f+ E, ~6 F# a
test=train;
; S( J% G+ _2 E* g' @$ Q @& j' C( r& s, g' s
test_label=train_label;
% T/ k2 C3 @1 o$ c: N7 X* y/ w# d3 P2 s9 f6 `, j' ^
model=svmtrain(train_label,train,'-c 2 -g 0.01');# G* V4 n8 k: @3 G5 X( o9 A
' g* L. m3 v3 c[predict_label,accuracy]=svmpredict(test_label,test,model);" D" l! a, D2 s+ }
" ?3 {: e8 j7 K- _
0 O( W2 b: A8 V v
$ N0 J6 T$ D( U5 @/ @& |/ D1
@( x7 n$ D' @# d
0 |+ n. O! h! o; jmake这一步报错
: }0 n% w4 Z. ]4 O- o* D* Y0 y- c- _( Q; n+ H
Error using mex (line 206)
% |. o% W6 n4 u3 J* P; z) p; V% s N) u- S: E7 ~7 p. U
Unable to complete successfully.
4 X9 ]/ Z) v% ^- G# i+ w* A$ w6 A, O& `$ y; c
Error in make (line 1)
, j6 ]7 i" g$ M: ]# [! D: V
9 \# \, i3 ^$ T( _% This make.m is for MATLAB and OCTAVE4 ]; D6 U- S: v; U3 M7 L' s l
; X# S& {+ v/ b: Qunder Windows, Mac, and Unix
9 |$ {, }! F/ v8 A6 m; U! r3 t1 j' P6 l
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
! S+ b9 [5 G1 h. j0 C' s1 l
B5 }3 m8 \0 h( `1 e4 n4 q) m9 H5 K另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/# r; V n1 E' g, b" J6 c7 c
/ u3 H; G0 ?' M" e; ]3 ?0 M
" x% s+ Z; d4 d
3 r. m! h3 W5 p5 E, e9 F2 还有一个make这一步出现的错误
" {# d0 _5 j3 p$ u" w
4 D' f. Z& v# q4 ^$ |4 Y# E1 W7 OUndefined function or variable 'make'+ l3 v6 A( A, f9 X
; [. H0 G( [) R% t解决方法为:$ }: k( w l5 k
; J5 k8 ~/ j4 T% |2 N5 g7 _设置matlab的path
1 \* }0 R- }1 @; f; ?3 s9 u2 H; b0 y4 Y9 a
方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)$ g) [' {( O' B7 M7 B8 [
?$ y' K1 m9 P1 |! i% X, E4 {( X
还要记得把current folder 设为matlab所在的路径
( b/ o8 ~) m5 n' B% Y2 t6 h- \+ {2 a* w
3 输入load heart_scale.mat;报错' N _6 i# C b1 C- F+ l5 u
1 U1 U5 t, n$ `) j& r; tError using load
7 ^+ P8 X0 K+ y6 {- P: w/ P
+ _; |8 l; L2 J! GUnable to read file heart_scale.mat;: No
% W- O6 ]1 J* B/ c, o, P/ W1 P7 f( b& H
such file or directory.
9 W D9 k0 ?9 d7 o- X
- V, V2 @" @6 E0 A5 r这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)5 x( t) ~8 t' o% ]
- A; V5 k4 [! j& b% H
4
: B: t4 U( z3 R1 m& W, w5 R0 l4 i) Q4 @4 _, X+ m* }
load 这一步报错" H8 x* z) u0 ]1 S' c& B
) c* r% |' I# z??? Error using ==> load
/ A8 e$ s9 j! M1 `3 m2 e7 M) TNumber of columns on line 2 of ASCII file D:\Program$ l. X$ Q+ l' W. ^: e
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
+ t! K. Z0 y8 {: ~% @must be the same as previous lines.
9 t0 f6 Z7 J6 W' U6 b官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines): L q& e- L2 ?0 n& t. F+ W( L
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
- ?$ L, U- s$ m: n: n/ [* B使用如下: [label_vector, instance_matrix] =libsvmread('filename');
, V/ |, a( Z, p4 O6 s% `此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
$ G9 f X5 Z; L j, l注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。( }) U1 |6 A% e7 m' I
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
$ j+ K) A/ V @& P4 B9 k我把需要的mat文件分享在我的网盘中了1 F$ r6 {* r2 y2 W# Y5 G0 I% F
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662
& ^" b0 L6 l% |1 H) V n
3 {' k1 U: w: n* [, P
( F0 j, ]0 J1 r6 y8 ~" [& A0 ?4 B F1 d( E
" F0 J; \) J3 C: K+ _" |! w, ^9 X3 t8 ~5 到svmtrain这一步报错/ j( u- b% j' n- _
/ A* J0 ~8 G: m2 l3 Q8 x. X??? Errorusing ==> svmtrain at 172) X" g: U# Q& a
! O) U6 [- S2 Q9 k6 g) D1 X
Group mustbe a vector., g+ l0 Y' u, {4 m, o4 m# k9 f/ b
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
7 x7 z# F5 _/ |" L: s+ s! W
4 b0 s1 t' @0 J8 I9 M
( M* u& q4 x* z/ Y/ F c5 f6 [7 ]3 r7 h& U0 X) }0 P
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……; \* G, | B M8 A* F# M
; L1 U$ M$ G3 l4 u真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^6 P- v! j1 d9 Z- l
$ p: e: k0 o* C4 U
' v! g& n/ _9 `8 y
- @! m3 O3 P* Y( O1 m
! G8 Y% _% F5 I g7 m
9 u: S- ~5 C+ i3 u$ e- e2 Z |
|