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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
3 C8 L) D% P5 A- L# Y
* j$ b) o# h3 H# a首先附上使用过程
2 N1 F* ?0 Q7 F: U- C9 {# L$ y7 \7 |9 |& J  {
   step1: 输入>>mex -setup( L! G7 z# i0 P9 {  r* x
   step2:3 Y* n- d0 Q2 }/ ~7 L6 q
   Please choose your compiler for building external inteRFace (MEX) files: 4 K$ u1 u3 E4 u2 _: ]$ `
    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y
& c$ C# M& S& H6 V* Y* L8 _   step3:' s* J2 l  Y9 ~
     Select a compiler: 1 y: F$ x* `% g! w7 P% m) T8 A" |
      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc 6 T# N' L2 K1 J5 b. Z* I8 K9 r
      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 ) c0 L0 M/ V- ?) N' a
      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
4 T3 b7 }3 J" |' ^6 H      [0] None
6 M' @% k8 N" J      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  8 R0 G7 a9 C5 ^& d  V2 s
      我选择了 【2】2 P( y6 M1 c: N1 {: ^5 l+ \
    step4:& n* e& x- I4 O5 F: f0 U
     Compiler: Microsoft Visual C++ 2008 SP1  & o$ E( y9 X! @% @$ k0 D& n1 p
       Location: e:\Program Files\Microsoft Visual Studio 9.0
$ \& Z; M/ Y' R% Z% P/ w       Are these correct [y]/n?  路径是否正确 是的就选y
3 r" ^$ N+ A; V1 V: Z       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
. n% W7 C6 l% N/ F( R! W& v
* @% V4 O, x4 [7 @7 i0 V0 z) IStep 5  
, z$ L8 c9 P' q" w& f8 a4 P: P) T
- c0 E6 R3 g7 y$ L, WMake5 q9 O( |' k5 k

/ P/ L9 Q( m8 H9 M! d% p  v* j后面就是:
+ d4 d- x, |# ]0 x( h3 ^$ A& A. _, N+ \0 |9 i! c9 \4 y
load heart_scale.mat(此处无分号)
8 C7 |2 E; {5 w/ B5 d: R4 Z8 |! t  T  g9 }6 S" N: C# L  N, j
train = heart_scale_inst;" G8 x0 E" w$ `/ H# j3 i

9 E; d3 l; A5 P  d/ z9 M2 y" Qtrain_label=heart_scale_label;
$ C- H7 r; Q1 f0 X- Q+ M* s2 @6 m. m4 {: `" x. p
test=train;
' k+ B# Q- J% e3 w/ ~" P3 L( ]7 b* q! ^- `/ M5 O2 V, k8 _
test_label=train_label;
" E# T  y. H) D+ R
# K, n$ A( i  M5 w4 R' pmodel=svmtrain(train_label,train,'-c 2 -g 0.01');
# w% p7 t% W- ]* |" F! D1 o
: y: i3 _( }' z[predict_label,accuracy]=svmpredict(test_label,test,model);5 L* P: u5 _/ F) \, ?: R
2 R) }$ t7 {# I# A/ P
/ A7 e8 l& T; h& J# b

, B3 y& {4 a# N0 H% d6 a6 `- m0 X11 d  V' f. Q7 K

3 e4 V; }: w5 S+ D( ]& Zmake这一步报错+ i4 b) w2 M* g
, @0 S+ Q' I9 I9 M: O
Error using mex (line 206)
& s/ ~* B% }( M  K4 r
- v$ M+ f0 d0 R% [+ MUnable to complete successfully.
* I8 W0 Z1 K+ M
- l+ k' F1 t5 a" y% p; s: JError in make (line 1)! S: W* {5 x6 ]  u

8 H& W9 _8 h+ d9 C% This make.m is for MATLAB and OCTAVE
8 y6 M4 V4 D4 B
- }  H0 C" P/ `1 i4 n2 yunder Windows, Mac, and Unix9 Y5 ~. g6 V3 J- `( n5 w$ G

6 n9 S- @. b2 L7 q在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~. |0 ?' h0 I& \5 c/ _# u4 s9 }
9 G' g8 t, l+ H. ~% D' B
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/  g( c4 r4 t+ j' F) J, N. U

: i7 B, L) d7 J9 q: B: u
, ?+ @% u$ K- |( `
3 p- x  B7 l; @4 m6 c+ O2 c; ?2 还有一个make这一步出现的错误
" a# v6 {' b. d5 g- T) M; L$ l+ ]) U* J% W: }
Undefined function or variable 'make'
) \5 w9 r. q$ r# j, E2 l4 ^0 I1 V8 X% z$ F7 d2 Q' e9 h
解决方法为:& p; w: n& r2 W" |4 q

; E) t% \1 `" e& z设置matlab的path
# \, L' D9 J3 x4 u* g& p0 {0 G) r; @
: J, D. v( m8 a: E3 F2 L   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)8 G1 S3 c8 C- V9 Z# U6 D. e
5 O; [  {# m# U9 H
还要记得把current folder 设为matlab所在的路径
5 y+ F% i1 G/ W" b
6 ^, @- c/ J# ^# k3 输入load heart_scale.mat;报错" v& _9 Z; d) \% B
5 s9 D% a# R6 N
Error using load
" u- y( S9 ]: Y) D4 T, w; a# ]) g! C, z! o8 R
Unable to read file heart_scale.mat;: No, ]. u/ P2 W& p. b0 M" S' Y

& h, \1 A. `8 z# f  \5 Lsuch file or directory.; t- d/ ^8 U" H4 ?$ e# ?8 U

7 g) s# e! V1 \. F% O9 c这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。), K# V9 H' s5 P7 N
# q- q# v1 i! p
4
2 q0 W4 ~4 }" U* y9 h  O, k& J5 G; P$ p, U9 Q* H5 W
load 这一步报错
; ~7 ~  a' m& y  C& G! S2 @! H
# O6 q8 @/ W* ]4 `, v. U- A3 J$ M% `??? Error using ==> load0 ^) b* Z) k+ q/ K6 r. o
Number of columns on line 2 of ASCII file D:\Program
' u( A: X1 X' E/ ^Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale1 G1 J0 R  y# u" s1 g& Z
must be the same as previous lines.
- M* F( }. _: r8 u& B' M官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines). I6 V$ n$ @: |/ Z* h1 u
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()5 D4 o! p3 o  R# k
使用如下: [label_vector, instance_matrix] =libsvmread('filename');: Y/ C4 o7 D2 h/ q9 `$ w; K
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');. k9 k" }% i0 V. n- E- h  b. F
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。# i5 h+ A$ e$ A
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
* s, h4 x6 U. q6 [- u% D2 B我把需要的mat文件分享在我的网盘中了4 y4 S7 _, D$ R  K  Z5 [
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662& q  x6 Y3 m$ [% b

7 {& k1 m& \5 ?
* Q; L5 t1 b" x- r3 B8 [5 u+ w; p0 L6 ~; ~

4 K& L) W* f1 j  q# g3 d' X5 到svmtrain这一步报错6 g$ o$ Z" q$ i* i& E! j3 W# t

& H8 d1 C3 z+ W* T5 [, P6 [??? Errorusing ==> svmtrain at 172# M8 h5 x  W9 A
* D. q' _% P! j! }3 f0 c
Group mustbe a vector.
6 a$ L% q0 I$ `; w( l& k* ]是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了, o2 c# u- Y3 ~/ C; J
' R9 `4 [; r7 _4 L, Q. ]

9 Q! K/ v% c! L4 \& V/ ?7 y& f. Q/ q/ Z; `
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
/ B6 m% y- C0 i% x
1 p( l: q1 r' P# Z& n5 T- Q真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^
0 R6 B5 c, G) y; L( b. x7 }0 n- X
' u* n* T/ `2 T9 ?. E: }, S6 q
( Z3 D3 k" h9 t, z+ e1 [- n6 z
& A2 @5 V6 o) j! O7 e9 \' k

/ }" O+ G2 |% M* i; N" p

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 15:12 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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