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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~' d( w9 }& y3 Z3 z  {0 d2 F, y
, P0 }5 F" [: t. O6 p* `
首先附上使用过程$ L' T, ]% _/ c" c

" D' s8 n1 ?! n3 V4 @6 h% k2 j0 t   step1: 输入>>mex -setup0 v# p' A0 V, k/ Z
   step2:
6 n8 w% p7 U; O   Please choose your compiler for building external inteRFace (MEX) files:
$ U; {( A' H, D4 e" |/ v    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y
) M/ E8 p+ b* s# ?   step3:
7 S1 Y' m' L3 x% C3 B6 F1 x6 _0 N     Select a compiler: / Q) j$ ^% z1 s6 B. E" P$ N- ?
      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc $ Q# H& `- X" o7 {0 z; M; V9 W7 G
      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
3 G% S9 Z1 Y: B/ C, K/ V      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio % u+ V0 x7 [  U* D  P: ^4 [$ U/ d9 \
      [0] None
/ i' C5 D# k0 L! N, c% g  g  {: ^      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  ) S0 F) `! j8 N
      我选择了 【2】
2 m! L# n" g( c5 H    step4:* L3 l1 \. E; m/ F- K) ^8 [
     Compiler: Microsoft Visual C++ 2008 SP1  
0 `' b* W3 d5 o9 j4 ^* c       Location: e:\Program Files\Microsoft Visual Studio 9.0
4 S# `2 o8 [- k5 x2 n       Are these correct [y]/n?  路径是否正确 是的就选y 1 R) _! {9 \" h5 D. q  T, u. f
       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
7 o7 |7 [' q3 o; c4 e$ o/ |
/ Q3 s7 U' O/ wStep 5  
. h# A% n6 f* o- j) |4 e  N+ N
Make9 o5 v; F. ^; j5 g) y/ B
/ `; E- O% A" K. S1 Q8 |% Y+ s1 Y
后面就是:2 p) |" Y  ~+ K- ^

% K) D$ ^5 C* ~0 r8 b3 Eload heart_scale.mat(此处无分号)0 m; [) X0 _2 m# m$ p

7 z3 d) q3 \# B  N1 vtrain = heart_scale_inst;
9 K1 F* j0 p3 h5 t' e; ^
& j& q1 e/ h1 e7 b  b: q0 M! Dtrain_label=heart_scale_label;
. \9 O% k4 m7 f* L) {- y
: ]) d- v6 }. ^0 q2 K2 x0 I4 I( jtest=train;' C' w6 l& L' U, V
: v1 V7 d" t+ C2 `# Y2 F& N
test_label=train_label;- @1 c2 I! y- K
  W# b* H& j# P4 n8 }
model=svmtrain(train_label,train,'-c 2 -g 0.01');
  U! k! ]; C7 _8 a0 U8 Q* c
6 Q" @2 f1 E' L  `  a1 R7 z) s3 ~[predict_label,accuracy]=svmpredict(test_label,test,model);, t  \8 ]4 b& s* b- ~: ?
+ H5 {% T) c) N5 e/ v, F0 Z& L
3 j( [  q; }9 U" q+ k

: C# V! m) i& k& K/ ^1
* [+ p! K" N+ R' T0 h% U. z
  N* E1 q2 L. t% D2 G* @4 W, P! Zmake这一步报错
% N/ o0 Q- x) [  C: W5 {7 m/ r
1 w" B9 ^; {9 w4 Q: g* ^& G7 YError using mex (line 206)
, r; T# u4 a% ]$ n) V) q/ j* a. D5 M5 f7 Y6 ^
Unable to complete successfully.4 g9 U3 y8 @# e
" c  d: U  ^  v8 ^( L0 J
Error in make (line 1)$ c; X5 O. y/ u4 T* I. k# r' ]

; S- I& \( w- c& j% This make.m is for MATLAB and OCTAVE' O7 b# y8 ^0 S/ i* B
. ?4 ~3 j" T4 `$ c: b7 }$ K2 ~5 J
under Windows, Mac, and Unix% s. w0 I) A5 l9 N7 v
  |  ]2 w3 Z/ ^; v
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~- E' n: M% h. s, \! [8 Q
: N4 n& k" L1 b
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/* U$ ?% S! E+ U

) B  @/ A: d5 y7 l% a3 Y" G# }0 a/ r, n1 k) c& j# @
# E* G4 ]8 o* z5 r
2 还有一个make这一步出现的错误
; r; ]6 W6 X3 H- K6 M8 J' E; a; x% P- [
Undefined function or variable 'make'
; g6 e+ N# S: C3 z5 ]( P$ i: T& }
解决方法为:* W9 o+ F- L7 T! M. s5 f# \: s& G
7 M) L4 _% E* j9 y
设置matlab的path
' C, r- `$ z: [% D
. }9 ~, Q* I3 G5 ]. R; F) _   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
" S* k9 B- W, W  G/ K% u
& A0 ?( J' B9 O5 ]6 v* k8 f还要记得把current folder 设为matlab所在的路径8 s, h9 N9 S' X- U9 {

0 s7 x; |8 ?+ T& c. p3 输入load heart_scale.mat;报错+ l! f- ~& d% S, d
* Z* u+ o8 c' f$ }4 E+ y
Error using load2 @$ q6 r$ f9 I* O) q
: ]' }: f+ I; {: e& q. S
Unable to read file heart_scale.mat;: No
/ }/ ~/ E; `' T. ]& ?2 B* X/ n! ^3 ~/ K* G
such file or directory.
3 c/ k) b3 x! I. v
* a6 v; K/ P' F! k, I这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。); l5 }+ x2 ?: G

, {! @3 _% m* @6 n) E. I0 {4- I, i, ^" y# k  R" [- c' g& ~
/ J& m7 p  G. {6 T* A
load 这一步报错3 g0 p8 i# ?- y  ]6 `  l
- i+ o% u2 w# M( T* y
??? Error using ==> load
7 }; c0 ?2 T, X, CNumber of columns on line 2 of ASCII file D:\Program/ i# _9 T- E5 m6 U( f8 `
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale0 G! E: G& H9 S% Q
must be the same as previous lines.
- Q* G9 y1 }% A6 q( V5 ]5 |7 G官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
9 j3 K% s/ W5 p% S, Q( m一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
8 B% s" {: C3 n# T( g0 `使用如下: [label_vector, instance_matrix] =libsvmread('filename');
1 a2 d  J8 F0 w& k6 y此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
. ?& z9 h! m( r: v; O注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
* Y/ Z3 Y9 l/ G- }% m/ ?) T7 R' ?但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!" E' ^/ ?6 V. z2 g
我把需要的mat文件分享在我的网盘中了. P% s3 }6 P1 a3 e) b9 c& m
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662
; p! g- ~* @9 n  ?
' |9 V6 J3 n0 b5 @  Y: O. ^! ^1 x* q, t( k8 l

' M2 _0 f1 T" ~. I  W, _% A4 m' K
5 到svmtrain这一步报错& w. K: C" i! t4 z$ k! y' t* ?

5 I9 M: x$ u( Z8 J. Z??? Errorusing ==> svmtrain at 172+ ]7 u. P" A8 O8 ~' z

5 X& q3 k( s8 I" l8 QGroup mustbe a vector.) D# Y1 }  V3 [- B5 O1 h2 F
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
/ g$ K  N& y; w6 ^$ F9 R) s/ a( l) w* T2 l" W! Y/ }
, P# B! m' A  n& w. [( a5 |
% p. L' K0 t: b  ^4 c
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……$ ^% a3 r9 u( o3 I- D

( J/ |7 _8 A$ D& W! B# G4 q+ W+ Y真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^/ p/ S! w) @* E( N# f1 L
# [1 c4 N1 q" }: G' _

. F2 [" M6 d- B+ G, w0 c6 p, s: n! \: p( y  j

( J9 ~5 M* g; K* o2 ~  O
7 X& g5 b8 Q2 s. n

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-25 05:02 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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