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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
5 b5 n( P) a9 i/ Y% `2 c5 \1 p! {4 T9 H! X9 ^8 X8 [
首先附上使用过程
& y* g4 h. b/ D" w  z+ z% |- j5 [) |# N# Z9 L
   step1: 输入>>mex -setup
4 |; c/ y7 b- O6 N3 O: c6 X/ p, S   step2:5 X6 ~# o% M: j' K
   Please choose your compiler for building external inteRFace (MEX) files: 3 ^6 V" b8 E" J6 Q# z7 x9 _
    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y8 _) z5 w$ t: W' w2 m/ V
   step3:+ o& _1 X( v: R  G
     Select a compiler:
% F; V& H4 `/ _9 L2 H% C. d      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
7 \7 q  R( ]2 {# X6 [& j      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
! G9 Y+ S  T, c      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
( N" N, n7 a7 E7 e8 ~      [0] None 9 c2 b6 ]( P# P3 I( b
      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  . B, ~7 j8 H  `+ U  e$ ]
      我选择了 【2】* K% F6 Z# S+ _/ ^* k
    step4:
- T) l% ^) g( x% A3 h+ c0 m& x: Z) [     Compiler: Microsoft Visual C++ 2008 SP1  + ~6 G, T* ~$ l$ J+ ^0 O
       Location: e:\Program Files\Microsoft Visual Studio 9.0
" G, v  S( G! B0 j+ R       Are these correct [y]/n?  路径是否正确 是的就选y . c7 H  H& n/ A% |- [( b
       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
6 ~( C- ~  h5 K6 P* R5 A! u  W$ B
) F& r- ?+ @/ Y3 Y* |" WStep 5  & I9 c1 m* _( i% I

0 m  R1 n0 \6 G* RMake
. h: Q. @5 z# p! |) Q$ `$ b/ F
" S) H) N) O% x9 V* Z) w后面就是:
7 [% [3 l* n0 H! ~8 c$ e$ ~8 N/ c
) }( _! U7 q# a9 fload heart_scale.mat(此处无分号)
8 O' A! B- m+ C* Y' L+ Y- ?9 y6 \: ~, G: b; L$ |6 A" @$ ^
train = heart_scale_inst;
1 m6 m' ]) `, `& f7 `: P, q2 d. b
train_label=heart_scale_label;8 Y; Y, {+ K+ v& l0 H
& ?8 `6 L! A+ N  v3 M1 g
test=train;
* Y, `0 j! u0 h/ }6 D+ \+ K2 _8 S4 z  i
test_label=train_label;
8 x: d9 i# y' d' M. E( B, n5 k( `
& N( H8 h* V3 ~; Imodel=svmtrain(train_label,train,'-c 2 -g 0.01');
/ {! {( }4 A7 T; q2 E4 v! m5 p% n% T$ b# u1 ?
[predict_label,accuracy]=svmpredict(test_label,test,model);
6 I3 A+ D' L- D$ S) k
! R" V9 W% L0 M5 \/ ~; T0 {' [- H- K- h, G7 L& u
1 r* N5 N/ D8 A5 J5 y0 q5 d; i
1/ m7 b! m; u2 i4 z3 Z

) C5 H( P% \. _/ Umake这一步报错4 A3 g& q1 ?4 ]: K
% l) I* X0 y; O$ f8 |
Error using mex (line 206)
& u- I9 i! H& i1 D* J" z' o" a8 V: t0 D5 _
Unable to complete successfully.% _# x6 H4 L, I  j5 ]' j

3 h1 d1 t  r  B% D% e9 e% ~Error in make (line 1)
( `9 r1 R5 p" Z2 T8 ]& H. y) B, ~- B2 i2 S3 C( Z# E9 b- P
% This make.m is for MATLAB and OCTAVE
  s% v* y* Q) @3 R5 ]( m0 A: b( X2 X8 x, _+ w* h, D' G
under Windows, Mac, and Unix
& ?+ P0 I! r. S5 i
6 [9 w1 D- ~9 [( J4 n) U在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
& |$ N7 m3 Q' e' o% {, x0 p1 o8 c6 g% W% J0 B2 b" [+ h
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/
. \+ s6 ?+ |* ]) a( L$ A& G# y9 x
9 n2 v  j5 v, i- u! p" S3 C- H2 q4 N" X  Y

9 o) e6 ]( q7 F2 还有一个make这一步出现的错误, H6 f0 b  @# ^% H" \
& k( o1 U( H3 s% F5 S+ E
Undefined function or variable 'make'
, i: o+ @6 X) [- U5 P
1 L. H3 l- q" c8 q0 d8 ^, H5 ~- E解决方法为:
' H, h; b- I1 n6 S* j1 s# {3 Z" s, }+ y9 y, f2 x" [. ~# }3 h
设置matlab的path . e1 ~2 L) v9 q7 C% I0 y2 {6 P. G
, j& z9 \* o' h
   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。); P& G4 c; ?! C. t0 `% I
" E& C" j9 K5 w4 }
还要记得把current folder 设为matlab所在的路径
$ }- L  C0 t: O! K: Z' ^! k5 K& _
! X0 y; a! D4 L$ @3 输入load heart_scale.mat;报错' D/ j! U5 h3 k
% h2 b0 l3 n5 K5 N: O- d- V2 q% \
Error using load# N% d' G' T; `4 r3 ~4 i8 W/ Z) k

1 V# z7 X0 d) O1 o1 T6 l; |Unable to read file heart_scale.mat;: No% n, Z0 I0 F$ _- C' x: J( o
8 C, g+ e! q5 R+ v9 F
such file or directory./ @$ l3 E; t( V7 a  ^' b, P
# M) u5 p4 V( d/ f
这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)& i" Y6 B$ J2 m; G  h& L$ K

4 l+ m4 M3 Y7 M2 G5 ^# P4- \  _' k" k! W! H8 b1 F* x
1 Q* U+ ~# ?% z/ N6 ]- n& P
load 这一步报错
, {& @8 v5 H* E% a8 m9 K$ [9 e5 c; N" \# ]) J4 `  [6 i
??? Error using ==> load: |- \* o  x  R7 a# `0 L7 t, V
Number of columns on line 2 of ASCII file D:\Program
# q" K9 ]5 a$ E8 U3 W2 A! vFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale7 [: a' W( [# v
must be the same as previous lines.
; s- Z8 q& \7 Y- V官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)9 P! |" m" Z, F7 U: [9 y; d
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread(): i# w2 N# v* @) a; X4 d/ W
使用如下: [label_vector, instance_matrix] =libsvmread('filename');  z: Q+ Y/ d# E8 J, h# N! H1 d/ v4 |
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');2 g+ F$ Z6 q' F% E+ a: J+ Z
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。* `6 n* q$ k# h% N, M8 @
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
) ]. |+ R' r' [! o4 a" O" ~. M  A, z我把需要的mat文件分享在我的网盘中了
( ~; c+ \" V  zhttp://pan.baidu.com/share/link?shareid=127727&uk=2165237662
" h2 B: i/ O6 J/ h4 A7 K; v6 ^5 r) P: w, }' o* N5 y- A1 A- Q
8 e" d- e9 F! m4 G' y+ C( i8 ^

+ m2 {+ H, w/ ]6 `2 @0 p9 a
; C! R7 H8 P% t9 X0 ?5 到svmtrain这一步报错7 e3 R3 }8 K( {5 {7 t6 }% J& v
3 U; _1 j& M6 x
??? Errorusing ==> svmtrain at 172" ?+ r% i0 a! Z( l- c: R% ?1 _
/ ~2 O$ V  C4 d1 j! r0 Q; l
Group mustbe a vector.% Z( e( [; q$ Z' K$ p) t, J# o
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
' g& c- c, Z) ]5 z% E8 }2 x7 y# s2 ~8 }' k1 W

1 Q$ s4 S$ H( t* @+ a# M+ H  G1 Y2 v6 u
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……: G" u- V. ^2 g% ~% P4 Q
! w' ?- E" t* N! j" t4 P+ i( j
真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^
6 E' h- a5 w* U6 K' G" c
) V! D0 W( [' m/ f0 v5 E
6 l( Y( l7 m4 ~' T. p( Q+ P. R) _$ s: B$ i) [( {# d
( Q! l: w: Z+ m- ]
; L, u9 n# S  B6 Q+ i

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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