TA的每日心情 | 奋斗 2024-7-1 22:21 |
|---|
签到天数: 2014 天 [LV.Master]伴坛终老
- 自我介绍
- 数学中国站长
群组: 数学建模培训课堂1 群组: 数学中国美赛辅助报名 群组: Matlab讨论组 群组: 2013认证赛A题讨论群组 群组: 2013认证赛C题讨论群组 |
3#
发表于 2014-8-23 22:13
|只看该作者
|
|邮箱已经成功绑定
网上找到这个总结的不错,你可以借鉴!
. D5 f# L. `+ n) M
+ F3 w" g" m K在matlab上使用libsvm工具箱使用错误及解决方法汇总8 M) o8 ?3 f5 a' u3 ?+ x
首先附上使用过程* l0 r( R3 [' @2 Q; o
step1: 输入>>mex -setup
( [ t% P% h' a2 r% y" M, S step2:: t1 t1 _' {3 N. Q: J7 i/ I" d0 @
Please choose yourcompiler for building external interface (MEX) files:
/ y& p: `1 K" J+ Q5 g Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y
e3 ~% C2 g2 |% { step3:3 I* o. L) C' ]: Q
Select a compiler: A2 |; B, h, L& H* V ]
X; ]* v8 \4 a" e
w- c: u% V# H: m( P4 b [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc % n" O$ F! t" l
[2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
0 F+ i7 C' g. W! D+ J$ g0 O [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 8 J! M. C' U" P) {
[0] None $ f9 v! B, j5 j9 m5 Q9 c# a4 V
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行
% g; H$ {" _% R 我选择了 【2】
; x) O) p0 N ]3 a* J step4:' V6 `4 d+ e3 F( _+ @. h- |( B3 h# q+ }; m
Compiler: Microsoft Visual C++ 2008 SP1 ; C3 v+ D; f' X8 R/ P
Location:e:\Program Files\Microsoft Visual Studio 9.0
/ U. k* J6 g& _ Are thesecorrect [y]/n? 路径是否正确 是的就选y 6 K Q: l9 a7 J* I- K% m
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。/ W9 [( R, F5 C4 X
Step 5 - @% }8 p4 r5 B) w+ R" m
Make7 Z9 K5 A# C5 K0 P' z/ Z: I
后面就是:: R/ [5 O$ _+ O
load heart_scale.mat(此处无分号)
6 C* ?& E5 L9 J# Q8 o+ D# e' C* htrain = heart_scale_inst;
' i1 }: ~" G9 Q# _6 g0 |train_label=heart_scale_label;- `- \& `# e: K
test=train;
6 B" O L, q" W) btest_label=train_label;
7 K) c1 D0 r( h' E3 xmodel=svmtrain(train_label,train,'-c 2 -g0.01');# `6 U. Z- A: ] R4 C
[predict_label,accuracy]=svmpredict(test_label,test,model);) p+ V8 ^' v) I5 i4 W; G& z u4 ~
1
! k1 p/ m6 ?: E1 zmake这一步报错* e$ u" u% ]5 Z* d7 ~0 [" [* O, @
Error using mex (line 206)
! a+ a6 Y: l' S- U" f5 p2 ]+ rUnable to complete successfully.9 l U1 S* V i# K+ {& J3 k
Error in make (line 1)9 x% ]( f# |8 [
% This make.m is for MATLAB and OCTAVE y0 J3 Z; f- U1 d) ~& L1 k9 A
under Windows, Mac, and Unix* Z1 r8 i* @! L! Q
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~* X: l4 L! b/ {3 `2 M8 i/ K
+ m! D7 {4 X" f& U( ~2 还有一个make这一步出现的错误3 Make时出错% b" I: W9 T6 ]' i
Undefined function orvariable 'make'9 n' I% D8 [0 | @/ {+ [
解决方法为:
- M# Y, b! r4 N2 r设置matlab的path & e d7 S. ^+ J9 ^8 I: N
方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)( {7 d- j- D& [/ s7 b/ V
还要记得把current folder 设为matlab所在的路径 j5 p" v, n9 M) X3 z
3 输入load heart_scale.mat;报错
: \5 C; F( G0 _: P5 x- _9 K) t; v9 T2 vError using load
6 h3 w; B* C! |# E) q# a* y" YUnable to read file heart_scale.mat;: No; v; g1 x( b L( d
such file or directory.
; G4 q: b# H6 v( n, b这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)$ z- ~) M u' y5 {) ?4 s( _ N
4* y! |. t- u2 \! C
load 这一步报错) {7 L* p" u7 J7 u6 z) S
??? Error using ==>load
- m8 { ~; o' {9 u: k# k" INumber of columns on line 2 of ASCII file D:\Program
5 B/ M! @' m4 HFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale" P' w4 W, l/ D# _- w- S
must be the same as previous lines.
! @% t/ r6 T( H) X9 E5 r0 c2 Y官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)* X m8 ?% y4 `7 A3 `& g
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
2 s- T5 m# b% V; }使用如下: [label_vector, instance_matrix] =libsvmread('filename');0 Y/ q5 E& t& q/ h# V2 W9 L
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');9 P' [4 X5 k. Q% x5 T: j
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。- d9 B* B2 {4 z. Y5 J
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!4 U& Y1 k; O$ G4 E' x
' K+ n, A' A) l N, T, s
, y. m' X8 N3 j$ k& {: S9 r& ~! N! s; Y' \3 W- n
1 y+ [! c6 ?) V @
5 到svmtrain这一步报错- @6 g" Z: a* c' ~6 X
??? Errorusing ==>svmtrain at 172* G4 E0 z5 q; e) z5 X' D( g& E
Group mustbe a vector.
$ ?( C4 `' D: l, ~* S S6 B! p是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了- c2 {( \! ~( Y3 x8 X* C0 Q4 z% v
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱…… |
|