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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
经过几天的学习,终于可以正常的用libsvm工具箱咯……工具箱很强大但是刚开始总是错误百出啊!在遇到问题时google了一下在网上总能找到很多解决方法。。。我总结的是能解决我当时的问题的那些~' A4 V" w( w* R* M& E4 I
$ h: i) g" V- K7 H* d
首先附上使用过程
) ^% m/ |& \/ G6 |& j% [, L3 [# L/ P3 Z& ]  R
   step1: 输入>>mex -setup
8 {& U1 M; ]- w% k+ A8 c  R1 [   step2:
) w3 ?' {% A. M. C4 P% g+ l6 l# ]* c   Please choose your compiler for building external inteRFace (MEX) files:
9 _3 q- _/ S7 z; `* v    Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器 可以选y( a0 u- ]0 Y7 a. r
   step3:" ^' x; [1 x+ s+ R7 w
     Select a compiler:
6 c4 q8 N0 `0 f      [1] Lcc-win32 C 2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc 6 ^+ F$ F2 b6 R1 ]+ l# i) e
      [2] Microsoft Visual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 4 k3 ?2 j9 d+ D3 C
      [3] Microsoft Visual C++ 6.0 in E:\Program Files\Microsoft Visual Studio # D4 q5 T2 s% z
      [0] None 8 b& [/ I& O+ G3 J
      [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  # P: ^+ q% _1 j% ^7 _
      我选择了 【2】
. f+ U1 h2 \1 c$ e+ m  M' H    step4:1 N% o* Y4 I; x
     Compiler: Microsoft Visual C++ 2008 SP1  
, }, @& I/ t7 f* p       Location: e:\Program Files\Microsoft Visual Studio 9.0
8 o% j, ~$ T6 h! R9 \       Are these correct [y]/n?  路径是否正确 是的就选y # i1 a" s& b  S9 D5 [; W$ M# O
       如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。* }2 _( C5 d1 U2 r

. q$ e- E  X4 W  eStep 5  . K- m- N2 Q0 m" |

. {# q# J9 g/ e- s# `% y: ~- ZMake) m0 x" h1 L" S9 U$ c
3 F  F) ^& i: |4 h. Z) p6 k1 k$ N
后面就是:5 w5 J# N3 I- Y+ t4 k; ?
7 }+ m* Y! `  Z) S8 J
load heart_scale.mat(此处无分号), ?& a) o0 u! C1 M/ g

* w) q! c# w; h/ a+ h& E. btrain = heart_scale_inst;* ?9 k1 E4 L9 ~8 w* l) S0 M' u
" z7 @" h# g* B1 I( f2 W
train_label=heart_scale_label;% e& _" n: c* ^* v% g  y
8 y. Y5 ?9 d5 p7 h
test=train;4 {6 W) S. Q5 J6 |! `9 P4 J5 k
* \3 S* D. D# |
test_label=train_label;
- m& u7 W4 y0 [+ \+ Z7 H4 ~1 d* U
& y1 p% h, n0 k7 `+ g2 ~model=svmtrain(train_label,train,'-c 2 -g 0.01');/ E% L5 D) i6 Z6 Q
6 T6 t2 c* Q* \0 |+ q3 C
[predict_label,accuracy]=svmpredict(test_label,test,model);
5 s+ r; y* }* i' {7 ^& L! O- j7 X" y1 h# c
7 D" X7 [9 M% P3 @0 t+ E4 ?: P
# I8 w* J* Z2 J& r  w- |) L, w7 t
1
( Y2 M% o: o+ e3 R' J; D5 \& p+ B# P  b6 D7 p5 m
make这一步报错
9 |+ u, p) Y5 A# E% W5 J% z% K/ E9 n. `$ j; ~" j8 g0 h) U, l
Error using mex (line 206)
" u4 O' y8 ]' b2 b% t& j  A: S
0 K- _; Z9 C$ E8 q/ f2 CUnable to complete successfully.
. g, B% O3 T8 p4 M  E
* x$ z, U5 y! V2 |Error in make (line 1)7 s9 i. }& Y+ Q( X; U, x! @7 \
4 I1 o$ e5 h8 v. u& K
% This make.m is for MATLAB and OCTAVE
6 X5 i% w& m& W4 T7 ]# ], r8 ]% `2 ]& ?% S; ?6 M& I4 b7 m5 |% X  ]
under Windows, Mac, and Unix
2 C% ^' `7 W+ e" L7 U7 ^' R6 x9 {3 Q+ r7 ^# r7 d" s
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
5 j6 I( y/ ]: x6 @7 X) n+ c: h4 y6 F! u3 c/ T. ]
另:Libsvm各个版本http://www.csie.ntu.edu.tw/~cjlin/libsvm/matlab/oldfiles/% g5 e" I% K- t: v3 c
$ F$ T# R$ p# H* b( V

# e7 Z9 u; T' n
& x$ Q2 `5 ^1 @; Z1 h* ?9 W2 还有一个make这一步出现的错误
/ v  L  T0 Y# L2 b* F& Z3 q7 \
0 ?% n& z: v8 i" y/ WUndefined function or variable 'make'
# }- P- g7 s4 Y
" b) s" v) c: i) V; J$ @$ W解决方法为:* O% N- ^4 N9 b+ ]

& |7 K  Z& @- @3 r. G设置matlab的path # j9 D+ C4 Q9 A" p, K# O
7 ~4 Q4 ^9 a; M  p
   方法file->set path->set sub path(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)2 n6 Z2 o' N% w  Q9 B( r$ o
" M+ m6 w$ g5 K( A
还要记得把current folder 设为matlab所在的路径: U3 d8 H, p2 q& c' G
6 R! I" o  L) ~3 t9 F% }) F# A, I/ @
3 输入load heart_scale.mat;报错  R5 t' N5 G3 _! j1 F

2 x( t! S4 A! Y/ ^Error using load9 M1 f, z" P. {* O- g' x' x* ~- D
2 F; h/ v& r7 ~2 D4 |
Unable to read file heart_scale.mat;: No0 R  U, R# ^# N# Z7 l

+ [; c8 v+ w) H4 |such file or directory.
4 m* M. L  g2 K/ T
9 y! A' [) Y) l; {) P$ j这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
' j0 S. N8 l6 Q8 ]: F1 d2 A% Z6 ]: z0 U* d' M
4
- S9 c& S, w, L! k- ?4 q' @% ~/ H8 v1 v
load 这一步报错# F' W& E- \6 ?& m7 A0 O" S

/ a" t& d8 Z- y??? Error using ==> load
  Y. G5 D: S8 F, O* zNumber of columns on line 2 of ASCII file D:\Program0 G7 n7 w$ Q8 r, B7 u
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
: D+ J( y3 R: S# `" F( Rmust be the same as previous lines., f( b+ R( j. g7 l# W( n8 m
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
; G6 r' k% t% w4 V一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread(); I5 R" g1 t: N- U/ e/ b! \8 H: l) h- g
使用如下: [label_vector, instance_matrix] =libsvmread('filename');
- W: z0 B" {5 C. _5 A此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');# _  H2 \& k3 g7 c% n
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst] =libsvmread('../heart_scale');../代表返回上层路径。
5 F: l* s7 j2 V" g# }3 e' l8 R8 b但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!0 `9 }% g9 t& L$ y$ C3 I8 z
我把需要的mat文件分享在我的网盘中了& }6 G; b' o: R9 l3 M! r% ~
http://pan.baidu.com/share/link?shareid=127727&uk=21652376621 `- x+ w! w4 R5 T* A: z4 D
( j* e# z$ j. F+ b4 ~. b

3 m, I9 X) d* w% A# C0 F) k0 b& A& d+ @/ _0 @2 O; e, n5 w
5 [; B) G% d# D  Q
5 到svmtrain这一步报错
; P& C: U2 U+ `; y) q
2 |7 Z6 N8 N- y5 k??? Errorusing ==> svmtrain at 172
6 b5 R; }8 y0 A  K6 Y
( J6 U+ ]4 _. uGroup mustbe a vector.+ Q+ a  B# Q2 V: s9 \
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了0 H6 \' [5 q% y8 O* y! D
9 n4 \/ G& J4 f& a$ O: t

' X( e+ Z, e* e) q' v5 M& w+ a
. v  h2 C. K: p. P. f在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
7 C- k' P: p# w1 u/ I
& q; Q8 \8 I2 A9 K* W8 I真是感觉不能偷懒啊!有时候偷懒一步,就要付出更多的代价去解决因此出现的问题^
# O  ?; b: B% X% \2 `% ^; M1 V7 X' _7 m$ B5 {: H
6 _& U$ ]& G+ T/ m$ @, d3 w
: I  l- z* R! Y; f; {! V+ e5 N( M

! M! g7 g6 O! V# y7 C6 ~1 K! I/ s8 S

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 14:18 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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