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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~4 Q2 y6 g- {2 r  G/ ^, I) E
9 b3 J7 O: d& |
首先附上使用过程
# t% Z/ e4 x: e* u3 @! a
8 e. G/ F; `! g8 }- e2 q   step1: 输入>>mex -setup# P+ [. [( N( w! v
   step2:
$ g  R# n$ O  N   Please choose your compiler for building external inteRFace (MEX) files:
" T* g+ w# v; Y8 g( y    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y
1 J8 e/ Z) B8 R1 @; O8 @0 f   step3:& x3 ?9 G2 @  M" J, [  {; ~/ k
     Select a compiler:
/ z& R. o+ X. G3 a0 R      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
7 Z; T* X. }3 j( a% ~/ w% I" o      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0   H) O8 o! Z$ i1 h8 S6 r
      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 4 L. v( ?, I; S; I9 Y- N' C
      [0] None
2 p, c$ j& B# e$ h+ P      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  $ J9 W: J4 C) X. t: Y! I9 b
      我选择了 【2】
2 @( `. e5 d6 H- x    step4:
2 ^: M* I$ T( V- `5 R$ H6 T     Compiler: Microsoft Visual C++ 2008 SP1  
3 k( E4 `' ]# |/ P: B# W       Location: e:\Program Files\Microsoft Visual Studio 9.0
; L0 ^" X- \0 W' C. r       Are these correct [y]/n?  路径是否正确 是的就选y
+ b. D4 }4 l" C# D) @) g       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
" [/ d/ {7 t5 C. [4 X
7 {' p" o* X0 ^& b  W6 F+ nStep 5  
% Y3 S; C1 [4 w3 u& p  D2 @" S4 g6 _! j
Make
: L8 O; c5 O. c+ F+ T: A; W, R1 a7 r% T& b1 b
后面就是:. C% g! ^. Z( D
* t  ^# M8 w8 v' ?: O
load heart_scale.mat(此处无分号)
& T/ s7 v4 H! W, u4 V8 o$ w' j1 i8 z
train = heart_scale_inst;
/ i& E4 F/ A  w  V' J- [3 X/ `' p/ l0 E3 f# q! d
train_label=heart_scale_label;
4 ~3 m) r: C: c, l: f
$ o% [5 u/ Q' Y" jtest=train;
7 O; i: J9 J( u$ N, U' r
1 T- h" b0 o5 |$ w4 H/ x4 ?test_label=train_label;1 ]0 k4 p, I- n- c" U1 w

4 V/ U0 Z& u% W% o# vmodel=svmtrain(train_label,train,'-c 2 -g 0.01');
9 n# p1 Y$ t; i7 h2 c
: L2 t4 G4 W) J8 j: j[predict_label,accuracy]=svmpredict(test_label,test,model);
+ z* u; b; j% Z4 L6 s& \% l/ D4 B: }4 r* J2 p$ T

6 F2 b. p! E0 g2 W3 E: L
0 l+ a7 N' ^7 L1
1 N: b1 S0 X: }5 ?. }4 R- G" \1 g- W( q/ C  z" i* [# |4 Z
make这一步报错$ K, |# H+ k) Q9 K4 G; t

( o3 E8 x. ?: L' l" XError using mex (line 206)
, q1 {4 N+ W" _/ N  |, S  H- C, G7 Q& q, Y) b! ~
Unable to complete successfully." B& N. l8 p' ?. p5 |: \; `! B8 r
0 G- |; x* s/ A0 W
Error in make (line 1): c6 k- L* K: F

! r0 |- R+ M' |9 Q. n% This make.m is for MATLAB and OCTAVE! J: f" b0 G4 f: U# Q

) b' {) [( O2 Kunder Windows, Mac, and Unix
3 O# a4 A5 J0 v1 ^  i0 P
* b6 {& e! `) ?1 w0 e6 E在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~) }5 \* n( m: k. r1 L& f+ k4 I
- X4 z* t8 t$ [
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/
/ q: j0 G* r6 j; _& e
0 t7 h' B. r% B: J' z( a0 d# H+ E: `+ O. Z! p4 E8 o

9 B9 j- }3 i) q2 还有一个make这一步出现的错误3 }* t& K" f: M$ q; p
- g) \* G& W$ Y6 r/ n+ \: _( B
Undefined function or variable 'make'" r8 g: o# ?. j' n1 [

# w0 q4 Z5 Y! _解决方法为:
0 m3 v7 x5 f; S2 u
# R5 z9 l9 i: l5 W设置matlab的path
. e4 m  K, M8 \' `1 Q7 @5 Q0 h, j6 l' t  s5 e6 U  A0 \% x
   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)6 \( L" I1 R4 b' |1 \6 @& t# A+ P

: z4 H8 n( o6 E5 N0 b6 ~还要记得把current folder 设为matlab所在的路径
& Q% F/ B* N' W0 H" G2 }- t2 X9 a3 M/ N% |! O
3 输入load heart_scale.mat;报错
% G# K( J( Z- ]/ `& ^
5 E4 i. b; c6 ^8 |8 ]; zError using load2 S6 e% E& n8 R% Q  F3 |9 O
" t6 W/ e' C: {" n) v6 Y- P2 X
Unable to read file heart_scale.mat;: No
; g; i/ K( L% D( P1 C+ C
1 V( Z4 o* }  q8 i! J3 p; q4 Ssuch file or directory.6 p. F' r6 _' k+ Y+ r

4 N! W5 Q' W+ t) q- ^这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)9 ]" w. |/ M( u. }, Z
. W, _5 x6 X- l) d2 X- J( [
4+ t9 n, ?3 Q/ P; i- P+ _
$ n9 a+ O9 m& D) [/ k4 ?
load 这一步报错
  ^4 r0 ^- R- t9 P. r* w+ c
) F3 m8 C7 ^6 J$ g??? Error using ==> load  M5 e9 k8 K/ V8 C
Number of columns on line 2 of ASCII file D:\Program
; e- B, x# o6 QFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
0 i6 T; [1 t/ x$ [must be the same as previous lines.0 [/ e+ `" K/ B1 S4 M( y
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)1 \+ U6 L) b0 ]( k& z
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()6 D7 w' b$ H2 z, K
使用如下: [label_vector, instance_matrix] =libsvmread('filename');# A- ~4 {; c4 Q  L& s$ w! Z8 q
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
8 l  ~" v# L, @2 U- W6 \* R注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
! H  I  i- G3 `但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!. _/ B( X! ^; T
我把需要的mat文件分享在我的网盘中了# }/ {' T  Z/ X* I
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662
- X; n( x2 i6 M* S7 z% y' B2 t" _$ |0 R1 u! B
5 S- L1 R% @0 w7 D" K- F7 a

& g% n- k% r! m. z
& Z) z, P) r2 Y$ I  \# d6 L5 到svmtrain这一步报错
! H: x# L! x0 ^5 C! `+ \6 S: Z+ x$ @& @$ T. u, X! |5 H9 |
??? Errorusing ==> svmtrain at 172
# M1 b$ Z8 d: s7 J
( \8 R% o6 X; d+ UGroup mustbe a vector.
2 R; q, m' D2 \! |9 l0 Z- @是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了3 f9 e5 p( k2 ?1 {1 V% w1 y
9 Y8 p9 L% s% b+ a

+ X5 o( a" r0 M  J, E, B( Z8 C! C( e. e+ O; l7 c
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
- ^! ?1 i5 G3 \' h1 ]2 W/ U/ ?. K5 Y% }; V! O# g# m: {8 }- n
真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^
2 b& _  v  X( h. j$ q4 P  ]( c, j+ P3 T
6 x" v! e( t6 l/ x& ?& I

: J7 {+ `3 L* g2 ?. T4 J, v
7 n( c5 D0 M: F7 T) [6 M, _# S$ L8 \$ t, O! {

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-21 07:43 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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