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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
+ [! G1 d- u3 S# @7 q, Z/ j0 g* V" E+ c' j  T
首先附上使用过程
% q+ [& y7 i$ u( s- ?; n) ^& _) ?2 y2 v- G8 C
   step1: 输入>>mex -setup; j4 h" u- o/ r& q7 P
   step2:9 U' F3 p; p: H- B( @+ ^; q
   Please choose your compiler for building external inteRFace (MEX) files:
; m/ O5 }# I- b0 l  j    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y2 D+ ~) G' h# p& m
   step3:
! }& w4 \& d6 A9 x     Select a compiler:
9 q2 f. `$ ~3 @+ C      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc 7 y  W: X2 L( N' m1 u
      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 $ W) M" c7 v# E. ]; n
      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
% Z+ U; D" w9 w      [0] None
7 c; w: ]/ F  y0 f& H& B: P9 S% y      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  , H3 U. ?5 l. B/ [! i
      我选择了 【2】/ }8 u& L) ^4 }  h# \: t$ w/ n2 B
    step4:' _5 O& k( s5 M+ [
     Compiler: Microsoft Visual C++ 2008 SP1  1 ?6 e- t/ E) w; m
       Location: e:\Program Files\Microsoft Visual Studio 9.0 ( h' h; ]7 n( y! J  x4 _" \1 X# J
       Are these correct [y]/n?  路径是否正确 是的就选y ( P' a, P0 s7 t5 N
       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。5 C1 Y( a3 m. o% W3 S2 V

$ i; }9 _6 I0 ~6 `% G( _Step 5  
7 k7 b  O/ w8 O! U& X9 Y' u6 ~9 d2 s) E  d
Make! w0 Z3 b: w% P" A. f5 @: P5 M
: p% i7 q+ Y+ y4 w. L
后面就是:: R/ J1 |0 V5 |  l  G! Z

2 E& \8 }+ F7 e: A# iload heart_scale.mat(此处无分号)
- `+ M  _7 U2 |8 J) o! _  P
9 u) p( K; L' }train = heart_scale_inst;
+ X$ `, t+ ~+ \0 k* t: o# N, O$ @$ i! K% @) ?3 q2 g
train_label=heart_scale_label;
% a5 _- C  S( g* r" T9 H3 _$ w, A  ?$ |  X
test=train;
3 s# ]6 ?' x5 X9 P* c
. I# q% V4 w2 ctest_label=train_label;6 o, |  P4 `; D& a" }& L# Z
1 q5 Z) I( t2 d  d1 v, D- k
model=svmtrain(train_label,train,'-c 2 -g 0.01');
# ~( k; ~4 @  [; x2 }+ M/ s6 M+ M& ]9 I9 S% I
[predict_label,accuracy]=svmpredict(test_label,test,model);
! T6 I) \/ }7 Y3 l% [1 k* b! ]* m7 p, M9 Z
* }0 w" R7 [$ R8 ^
8 n0 V/ J; [4 p* s
1
) J: s  I2 G+ N( L' Z6 d2 ~
6 b5 z# `  B- [) U1 b0 ymake这一步报错+ W" n* L' I3 [' `$ ]: D
5 c8 c# O6 E/ G3 ~! K! a
Error using mex (line 206)
% @" C3 B0 m  ]: H+ q! N: g
, p: x% B* X) ^/ [( gUnable to complete successfully.* M4 H; o+ ?3 U9 ]5 W0 }% z
/ M# `( ?/ ~: l; c! X( q2 l
Error in make (line 1)2 d4 \, ~) Y4 S6 ^

" b% P$ x6 L7 q' a# `7 a% This make.m is for MATLAB and OCTAVE! z) I- L$ ?, f+ u" h/ D& G

$ Y! w; f; R2 `! T6 T0 I& b8 Yunder Windows, Mac, and Unix8 n- ^! y8 C. m2 ]6 z" H

$ M. i' W2 U, t在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
& C4 `4 d- e0 P- M/ b; z
+ ~, X3 W; W( a2 Q8 g8 ^+ _* k另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/
  X* p! V7 \# H% a$ z& y+ O, I+ C1 ?! b- R3 b
9 |" n( O2 g5 R. {

( u* K& U: l9 |) m7 X8 d- K2 还有一个make这一步出现的错误
. ~, _( r( _  V7 E
( L: i' ?: Z( M" ~, dUndefined function or variable 'make'. K  K6 R  y. M# A

" _& |0 B. n; M, t' Y1 p! j解决方法为:
' k* E7 L  y' T$ H/ Z* {( v- @- h: w7 G9 }
设置matlab的path
! B# |" s! j6 Q
% I- f2 z. \( J6 [6 l' s& D   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)2 L# {1 L% Y! q3 x6 k( j! |; N8 f5 Q
, U# Y6 y+ U+ _' v/ E1 G: Y
还要记得把current folder 设为matlab所在的路径' A0 u" f# Q, y0 P! x3 V& l+ k

9 F# l2 T3 Q. n0 t) f7 \3 输入load heart_scale.mat;报错
# u2 h) y+ d- G' K$ @6 ?9 h% \! C9 Q( ~" ~& W
Error using load
, ]6 r4 r: q! t( W# I& _0 _% K, [9 i/ V* z8 c. d/ O5 l
Unable to read file heart_scale.mat;: No
4 i1 g: S1 J! e2 q& c& Z0 L4 S$ ^
such file or directory., ]: `- w( D) k# b. x

% A: y) f$ q% r! D7 w( I这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
; _. e% h$ d1 ?# A  j" F: ^
( i, R3 B. W6 {; y* [4 J4; |4 J3 \' k. N# @+ d( Z- s
: P( b. P$ N1 Y; h' |
load 这一步报错
6 E1 N) m( ^# i2 [& G3 Y- [( c( g
1 E- i4 f* ^" @7 E% b6 |! I% w??? Error using ==> load
# a. p4 _5 G7 J% ?Number of columns on line 2 of ASCII file D:\Program
6 W6 H4 u/ \3 U; {$ jFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale6 [0 b3 r8 N/ B1 }* J
must be the same as previous lines.3 O" {, t8 f, F8 f. E
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
6 O1 A) K' z+ R( \- N3 |一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
6 z; d: d2 b% b5 g' u) T/ I使用如下: [label_vector, instance_matrix] =libsvmread('filename');0 n8 t+ ?2 k$ E9 y- W% c
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
1 Q6 y7 L! B: S注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
# h: q$ a; B% v但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
: w  {8 q0 t6 s. n% N) Z我把需要的mat文件分享在我的网盘中了
  R7 z, `) ]4 _; Zhttp://pan.baidu.com/share/link?shareid=127727&uk=2165237662& K' z' W! X$ Z% z/ v! p5 u
5 z/ k. F" @4 P  R! m" n

! N; @/ ~( C# ~* K" b9 _; }5 c  Y  E7 M& L/ }9 G, m
. U- C) }+ q1 h' L
5 到svmtrain这一步报错: S$ e/ S+ X5 k& [
4 F/ n. V7 @, f( k9 K3 Z
??? Errorusing ==> svmtrain at 172
2 m7 k( F  x# |7 }$ m5 Q% V/ o4 \0 h- s( T1 k
Group mustbe a vector.& G. P1 j1 F, O% _" J
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了, Q- H. C. B" i5 z0 {) E3 \$ Z

8 N3 ~5 ~/ ^7 J8 z1 K" ]' W4 X' R( |
" @0 k! ~% h  A
" E! R/ y1 p: C( J* Y8 {在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
: R  J8 L& ]  a1 S9 w; N. y$ S/ `' o) G3 H' X/ J' w: N
真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^# S. P  n1 W' l* E" \7 O

8 x7 j; I  e+ ~  r/ _1 A' V8 m1 d/ r) v- G8 P% R  r
4 X3 L+ K; g7 u( ^/ E, \$ w# A2 K/ @, a

4 T  I0 a% x: |) M1 j' x: J% z4 q- P% e, t0 L4 e* h% y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 15:51 , Processed in 0.187500 second(s), 23 queries , Gzip On.

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

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

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