找回密码
 注册
关于网站域名变更的通知
查看: 384|回复: 1
打印 上一主题 下一主题

在matlab上使用libsvm工具箱使用错误及解决方法汇总

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-29 14:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~; w/ Q* Y" I3 U: h0 ~; T
0 \0 s6 ~' N7 Z
首先附上使用过程
+ Z$ Q4 Z7 h! e" Y" v, d; k1 Y) `' d! Y% V8 y; b
   step1: 输入>>mex -setup
# t7 t0 c5 J0 E$ I4 H5 m; {   step2:
) m; p* U& D) j( y5 \! c: o   Please choose your compiler for building external inteRFace (MEX) files: " H+ F- X- `2 S6 k
    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y
8 I4 h* k" K* V   step3:% j' l- K& s# j9 t0 O2 r% S
     Select a compiler: # S& |* X$ k" B+ g) N+ m) u! [. F
      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc , u: r5 r& P5 m  _: {+ \, K
      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
7 X; ]* B+ C4 p# v( ^5 s! f$ g8 D      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
/ U5 w& }: f9 E- j( Q8 R      [0] None
' d. c# @* r# l, ^% A/ C      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  8 Y" M& O/ a* B' l( n3 r/ c
      我选择了 【2】
1 }; g6 w: g# x5 s7 g* p4 [. l    step4:
" f, V5 W% j% ^/ b8 [& G% f     Compiler: Microsoft Visual C++ 2008 SP1  
( r, {# T+ e- E* U, m" f& [0 \. t       Location: e:\Program Files\Microsoft Visual Studio 9.0   Q! I2 ]6 Y4 g9 @& ?# t8 v
       Are these correct [y]/n?  路径是否正确 是的就选y
2 m- c. }$ \8 F# A* r4 u% `# R       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
0 n0 S0 t  y9 r- b& l, L8 u8 U0 l4 l5 b
Step 5  
- Q# D: n0 @& ^5 n% `1 Z, z) |# y0 c
Make1 v! }& C8 b( F* E1 {3 X

) G  z4 a' {7 V: r% Y后面就是:- [: ~: I. \6 ^9 x2 `
0 b6 Z$ G( s- ^1 s" e) O' n8 D
load heart_scale.mat(此处无分号), v" F4 M" X' w0 w- L
7 p* m- ~- k3 S* o- M
train = heart_scale_inst;
5 B5 A- F3 N7 b; t  x- |) b. Y$ T; R- W5 O: _- B
train_label=heart_scale_label;* ]8 w4 l5 g* R4 u
3 R% k4 {6 O, M5 ^8 L* n* p
test=train;
0 c% V7 }3 @* ]5 V% b* ~
8 B4 ~& {. n/ }: x7 x- D, T( htest_label=train_label;
0 |3 K5 P* I, z8 w) P) O6 n  ]1 f& ?7 D; F7 l
model=svmtrain(train_label,train,'-c 2 -g 0.01');( v5 G% U6 }+ j& A

* p1 t( F; \/ L3 H5 w4 q[predict_label,accuracy]=svmpredict(test_label,test,model);* {+ ^: c" C5 Z# j

$ s" Q- Y9 b* n7 O( {) c
, @' J! i2 [/ L6 G- S0 j3 G( C
( I$ G) r3 G& i2 }9 \7 [9 p1& y5 K8 o6 L( i# e2 Z8 }* S5 ^

0 z. [" _8 C# M* W! J7 Omake这一步报错
! x% r% j. ^  K6 b' m* X, ~- W9 D: Q! r. O7 f5 V  E6 n2 o
Error using mex (line 206)
  S) ]) M* k. z4 ^$ Y
# V& K5 i( b5 D, }Unable to complete successfully.
" c' J: ?( y% E( D4 J( x
+ P7 e- h1 |& i# K+ EError in make (line 1)4 q0 Q8 }& J8 D
) }: ?6 L: R5 M) w+ a9 e
% This make.m is for MATLAB and OCTAVE
# O$ U  o: \* o0 `7 x) S' i8 D/ O# n. B; O; X  ?+ k
under Windows, Mac, and Unix0 {1 M3 n( J0 x$ p! |+ z0 X, i* J

; l8 g: \7 t6 ^& s( `8 O在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~. U) o0 L9 R) F. D" j
# y% a% |- G  O. ^! O. l
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/
, [8 U! z2 U2 g* F/ v1 D+ z& {$ e
% n# i8 ]  W- Z* @* H  ~
$ D# D2 M3 ^9 F; T' G1 ?+ c, n) _% f% {0 B- c: V' {' G
2 还有一个make这一步出现的错误
) f& G$ M, D- u& j' `3 t2 u% w" }, b# R, j7 u+ U- J
Undefined function or variable 'make'- e4 P: |0 Z3 Y
9 i1 y+ l. u% O# b5 m+ i
解决方法为:" q. e* U8 B$ [$ M4 `5 A
$ @: _+ W0 A8 M. P2 N! q* B- V
设置matlab的path / F$ e$ {: R# s1 G* k

, I/ d' I& e+ m# W5 i2 e  X2 u   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
; P+ R+ U9 D) q* j
0 ^7 d3 H/ _2 v还要记得把current folder 设为matlab所在的路径
7 m6 v/ S  v9 ?$ N; }; M1 F; ]
# Q6 x. R; v9 y1 `/ u& G3 输入load heart_scale.mat;报错* c. O- ~! y# M! A& o/ u

+ D5 S9 W3 D( u- }% L( jError using load
1 i3 B% ~# V% j! K9 d* K* X8 `1 b0 L( y5 W) X
Unable to read file heart_scale.mat;: No
4 q+ `/ T; F( l& i
4 K2 b; P' U5 q: Esuch file or directory.
; `3 ^; G! n6 w$ b" [0 J* L+ H1 T4 Y1 m( @  A9 I9 t  {1 S
这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)1 i0 Z9 o9 C3 r2 h6 F0 ^, r* E2 D! `& @

; n/ G8 c+ f7 z; S. |; w7 d, P6 x4+ L! z9 A9 Q; g8 @

4 S; f4 p8 L+ nload 这一步报错$ j9 @9 O; [+ S

" V$ J, X7 m3 m$ A??? Error using ==> load
9 f  t! l/ v3 }; b( E2 Y, @Number of columns on line 2 of ASCII file D:\Program
5 a, }+ F% l0 Z/ G8 ~) t, U4 GFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale2 [! U+ c' O. f1 Z* |
must be the same as previous lines.
- g& u  ^. y' }3 E3 [; u! i5 x. b官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
, J1 y6 D" Y' d5 x) t9 a- N一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()6 z) m+ w& s; o6 t, c  b
使用如下: [label_vector, instance_matrix] =libsvmread('filename');
3 C, V4 R3 b/ }- A7 S6 t+ H6 _此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');6 M8 e) l: d, k' [, c
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
! F- y4 _" X# ?2 W但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!# F3 x9 f. x) W7 y. E
我把需要的mat文件分享在我的网盘中了9 D. k$ @; N- s3 W  r& i: v' i
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662
# E6 i7 U- c2 a! d2 I/ S8 t1 K. q+ o. a
) u5 K/ W! r: u! H% w% [' O9 O
4 l0 s1 G+ |- r1 u* w
3 i+ e) o3 U8 ^8 A7 y5 Q
5 到svmtrain这一步报错
* @. N( Q8 A# Y6 H' [. @+ v3 g7 ~
5 j, t, ~: P/ J# T??? Errorusing ==> svmtrain at 172+ u9 I3 l, n. [& Z! _3 o* p, y, G: u

# V0 {8 c* n. W- O+ \6 |6 m& jGroup mustbe a vector.) H+ G3 u2 L- ]1 v  Z
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了% z$ r6 X+ G& x( y

4 B  L" g2 e/ u* M. B1 M$ j$ [2 N6 r1 [! c* Z6 q

4 b: C; P5 J/ M( C5 n在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
3 d4 W4 T, g7 D; Y9 V( z
+ @$ `- f7 W4 ~. p+ ?真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^
( j1 I/ o" w. Q+ f0 h
; A; [/ a+ V0 g1 A
, t; d* z, K0 ]1 G- ?5 h
& p1 c3 F2 H, c  m: S
4 A, r! f( @4 m+ j8 ~
* B& H  i$ e( P; W3 H" [  P2 p- v

该用户从未签到

2#
发表于 2020-6-29 15:32 | 只看该作者
在matlab上使用libsvm工具箱错误及解决方法学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-24 17:30 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表