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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~
4 Z7 F3 J* k: N# f
# N* {3 P1 v$ x0 T: ?1 k% I首先附上使用过程8 u. N  c; K4 v

$ Y! n! n7 |4 j& m7 j   step1: 输入>>mex -setup- }" H- p. y5 W6 I
   step2:
5 j9 i) Z4 a% r/ ~   Please choose your compiler for building external inteRFace (MEX) files:
( P1 r3 x  Q8 ?8 C9 q    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y5 g* [3 s/ @- p( @
   step3:
9 H( t$ ^5 L, Z& [4 ]# K( `8 }     Select a compiler: # P' Z; Q$ x+ a; Q, _
      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
8 b0 x2 `: p8 w# z  a% P6 I      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
! T1 S; ^4 w9 _" n2 [; T      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio
/ H/ f( E9 P5 Z3 F. r' F      [0] None ) l* v- K1 d! A# {$ {( g" J) R  U
      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  2 ~7 f- _6 B" t" _! Z4 X
      我选择了 【2】& U$ e% I5 J* W! L
    step4:
. `, n3 Z2 ]+ ]; N0 G     Compiler: Microsoft Visual C++ 2008 SP1  
0 U# K2 c9 }- M  ^       Location: e:\Program Files\Microsoft Visual Studio 9.0
. ?7 l% `6 `5 s  d       Are these correct [y]/n?  路径是否正确 是的就选y 0 g* r- Q# t6 N
       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
# x5 G( }- t$ e8 D# h2 D0 p, J, f/ x! U6 z+ |  |
Step 5  
! m. d* M& R9 l, J/ B
+ r2 `7 i' s. ~: g$ ~( F) i9 RMake  N! @$ W- g/ A2 J, R

$ K2 M4 s  C3 `; C后面就是:: T% s+ W! f, B3 C& I

" T6 |5 J# Q1 j" y+ A/ ]  Mload heart_scale.mat(此处无分号)
- o( B) q& s" R- o$ J! B+ r
" C* ], _3 d) ktrain = heart_scale_inst;
  W- h. \6 X4 b4 t! U- `0 x
* G5 J  s2 W% B8 b/ v& {  J# A  Otrain_label=heart_scale_label;$ _6 f3 Q0 u; Y9 `7 b) M3 X" V. G( [
% f+ E, ~6 F# a
test=train;
; S( J% G+ _2 E* g' @$ Q  @& j' C( r& s, g' s
test_label=train_label;
% T/ k2 C3 @1 o$ c: N7 X* y/ w# d3 P2 s9 f6 `, j' ^
model=svmtrain(train_label,train,'-c 2 -g 0.01');# G* V4 n8 k: @3 G5 X( o9 A

' g* L. m3 v3 c[predict_label,accuracy]=svmpredict(test_label,test,model);" D" l! a, D2 s+ }
" ?3 {: e8 j7 K- _

0 O( W2 b: A8 V  v
$ N0 J6 T$ D( U5 @/ @& |/ D1
  @( x7 n$ D' @# d
0 |+ n. O! h! o; jmake这一步报错
: }0 n% w4 Z. ]4 O- o* D* Y0 y- c- _( Q; n+ H
Error using mex (line 206)
% |. o% W6 n4 u3 J* P; z) p; V% s  N) u- S: E7 ~7 p. U
Unable to complete successfully.
4 X9 ]/ Z) v% ^- G# i+ w* A$ w6 A, O& `$ y; c
Error in make (line 1)
, j6 ]7 i" g$ M: ]# [! D: V
9 \# \, i3 ^$ T( _% This make.m is for MATLAB and OCTAVE4 ]; D6 U- S: v; U3 M7 L' s  l

; X# S& {+ v/ b: Qunder Windows, Mac, and Unix
9 |$ {, }! F/ v8 A6 m; U! r3 t1 j' P6 l
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
! S+ b9 [5 G1 h. j0 C' s1 l
  B5 }3 m8 \0 h( `1 e4 n4 q) m9 H5 K另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/# r; V  n1 E' g, b" J6 c7 c

/ u3 H; G0 ?' M" e; ]3 ?0 M
" x% s+ Z; d4 d
3 r. m! h3 W5 p5 E, e9 F2 还有一个make这一步出现的错误
" {# d0 _5 j3 p$ u" w
4 D' f. Z& v# q4 ^$ |4 Y# E1 W7 OUndefined function or variable 'make'+ l3 v6 A( A, f9 X

; [. H0 G( [) R% t解决方法为:$ }: k( w  l5 k

; J5 k8 ~/ j4 T% |2 N5 g7 _设置matlab的path
1 \* }0 R- }1 @; f; ?3 s9 u2 H; b0 y4 Y9 a
   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)$ g) [' {( O' B7 M7 B8 [
  ?$ y' K1 m9 P1 |! i% X, E4 {( X
还要记得把current folder 设为matlab所在的路径
( b/ o8 ~) m5 n' B% Y2 t6 h- \+ {2 a* w
3 输入load heart_scale.mat;报错' N  _6 i# C  b1 C- F+ l5 u

1 U1 U5 t, n$ `) j& r; tError using load
7 ^+ P8 X0 K+ y6 {- P: w/ P
+ _; |8 l; L2 J! GUnable to read file heart_scale.mat;: No
% W- O6 ]1 J* B/ c, o, P/ W1 P7 f( b& H
such file or directory.
9 W  D9 k0 ?9 d7 o- X
- V, V2 @" @6 E0 A5 r这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)5 x( t) ~8 t' o% ]
- A; V5 k4 [! j& b% H
4
: B: t4 U( z3 R1 m& W, w5 R0 l4 i) Q4 @4 _, X+ m* }
load 这一步报错" H8 x* z) u0 ]1 S' c& B

) c* r% |' I# z??? Error using ==> load
/ A8 e$ s9 j! M1 `3 m2 e7 M) TNumber of columns on line 2 of ASCII file D:\Program$ l. X$ Q+ l' W. ^: e
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
+ t! K. Z0 y8 {: ~% @must be the same as previous lines.
9 t0 f6 Z7 J6 W' U6 b官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines): L  q& e- L2 ?0 n& t. F+ W( L
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
- ?$ L, U- s$ m: n: n/ [* B使用如下: [label_vector, instance_matrix] =libsvmread('filename');
, V/ |, a( Z, p4 O6 s% `此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
$ G9 f  X5 Z; L  j, l注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。( }) U1 |6 A% e7 m' I
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
$ j+ K) A/ V  @& P4 B9 k我把需要的mat文件分享在我的网盘中了1 F$ r6 {* r2 y2 W# Y5 G0 I% F
http://pan.baidu.com/share/link?shareid=127727&uk=2165237662
& ^" b0 L6 l% |1 H) V  n
3 {' k1 U: w: n* [, P
( F0 j, ]0 J1 r6 y8 ~" [& A0 ?4 B  F1 d( E

" F0 J; \) J3 C: K+ _" |! w, ^9 X3 t8 ~5 到svmtrain这一步报错/ j( u- b% j' n- _

/ A* J0 ~8 G: m2 l3 Q8 x. X??? Errorusing ==> svmtrain at 172) X" g: U# Q& a
! O) U6 [- S2 Q9 k6 g) D1 X
Group mustbe a vector., g+ l0 Y' u, {4 m, o4 m# k9 f/ b
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
7 x7 z# F5 _/ |" L: s+ s! W
4 b0 s1 t' @0 J8 I9 M
( M* u& q4 x* z/ Y/ F  c5 f6 [7 ]3 r7 h& U0 X) }0 P
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……; \* G, |  B  M8 A* F# M

; L1 U$ M$ G3 l4 u真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^6 P- v! j1 d9 Z- l
$ p: e: k0 o* C4 U
' v! g& n/ _9 `8 y
- @! m3 O3 P* Y( O1 m

! G8 Y% _% F5 I  g7 m
9 u: S- ~5 C+ i3 u$ e- e2 Z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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