TA的每日心情 | 奋斗 2024-7-1 22:21 |
|---|
签到天数: 2014 天 [LV.Master]伴坛终老
- 自我介绍
- 数学中国站长
群组: 数学建模培训课堂1 群组: 数学中国美赛辅助报名 群组: Matlab讨论组 群组: 2013认证赛A题讨论群组 群组: 2013认证赛C题讨论群组 |
3#
发表于 2014-8-23 22:13
|只看该作者
|
|邮箱已经成功绑定
网上找到这个总结的不错,你可以借鉴!
% j! s9 I9 h1 R* u& O- T" D5 O" @% O
在matlab上使用libsvm工具箱使用错误及解决方法汇总2 X7 V0 ~, Z; ?
首先附上使用过程
8 q) L; y# u1 |5 v3 `4 y" z3 Nstep1: 输入>>mex -setup
& ^& j; ]+ C6 H7 G7 O. Y; i step2:- B- r4 D" C; ?( |" M. ]5 g
Please choose yourcompiler for building external interface (MEX) files:
; }, y8 O8 o' |9 `* A9 t j Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y) C, b& H) N. j4 q
step3:: n1 q+ v" q+ Q6 i/ S$ s
Select a compiler:
( @* \7 |! ~7 {$ V, r, s+ ` d3 L5 n9 z/ M/ I+ g
+ D( Q( j1 F1 Z) b
[1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
7 t6 K$ U6 n$ X+ s# r [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 |+ R1 v/ K2 C" X" ]( f# S5 x' e1 U
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio ( g3 j7 d5 B3 v/ b
[0] None 5 i: B' q) b' @/ o
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 - Q7 z3 ], ] q3 U
我选择了 【2】) @3 ^ T6 E: I/ o( N* O( E
step4:7 y* ~9 j$ y9 ~. I3 m/ H
Compiler: Microsoft Visual C++ 2008 SP1
! n* T' W8 O8 {$ U8 u Location:e:\Program Files\Microsoft Visual Studio 9.0
, H3 S# V) i/ Z0 p. T Are thesecorrect [y]/n? 路径是否正确 是的就选y
9 l/ h) w, q# Y' m% m 如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。; Z; l4 g2 F7 O) p- E3 h u
Step 5
( _. t) m. c. [Make
2 h5 t! G$ c8 ]+ l后面就是:
E. W2 f1 G: U; g$ Eload heart_scale.mat(此处无分号) B$ {% o, E5 f) X$ G
train = heart_scale_inst; {' X# J: d K
train_label=heart_scale_label;
1 k: I- B! Q N" S Ztest=train;# Y1 v8 b4 _/ p
test_label=train_label;) i/ `2 o& c; U* U# ~% n- h; ]
model=svmtrain(train_label,train,'-c 2 -g0.01');
9 ^ j: s9 |$ t. d( A! T[predict_label,accuracy]=svmpredict(test_label,test,model);
. s% F5 A" ]) p+ O5 Z7 k& n$ {6 u; ^% ^16 y0 Q+ o3 H, o& {# u
make这一步报错
6 b% K: q+ C' ^9 tError using mex (line 206)( F2 }+ s" B5 X$ F* k7 \3 n
Unable to complete successfully.) M9 c" h9 T4 u/ f; M; t5 j6 H; m
Error in make (line 1)5 O) { F& o0 W) J
% This make.m is for MATLAB and OCTAVE
' W, e. b$ p7 N. p! c& eunder Windows, Mac, and Unix; S$ d" L9 D3 N4 X
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~+ ~: @' \1 X1 m+ V: R& m9 j
, }3 ^$ z9 i/ }% i: c2 还有一个make这一步出现的错误3 Make时出错
% \1 M$ {% w1 ^1 A, \# R8 MUndefined function orvariable 'make'- Z% J! s" c) x! z) L
解决方法为:
% @" m; t8 d" Z设置matlab的path
) Y% X5 ^% d. H 方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)- ^6 k+ k: a( X. U/ o3 d
还要记得把current folder 设为matlab所在的路径0 S+ ~6 `7 k6 Q" n) s) j
3 输入load heart_scale.mat;报错
; } J# W+ u0 g' Y* a) k0 z0 {! @/ WError using load
/ f: C) ^* ?; O/ z6 dUnable to read file heart_scale.mat;: No) ^9 e' ^8 d& a8 n9 _9 [
such file or directory.5 j- c7 m8 E! f' }: Y! r" @' `
这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
! |' i+ p2 G( N2 r43 l" u' G; s& d3 Z& R
load 这一步报错
5 h% Z3 |* m0 z??? Error using ==>load j5 x* j) R+ n& e Y' c# R
Number of columns on line 2 of ASCII file D:\Program
/ Y# c) M: ~. }, m% D) DFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
6 D O" S2 _& Y3 k% Zmust be the same as previous lines.
3 ]0 M* g- C4 x) A# ~官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)" e# Y/ D% E6 r+ Z6 K! v
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()0 l: R( i' _/ ]/ V
使用如下: [label_vector, instance_matrix] =libsvmread('filename');8 }( x, g% `/ J
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
& {* [6 }8 \% e! B. p0 O" s1 K注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。7 Z, U) \0 {( z$ W/ J( Q2 S
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
' D8 i/ D+ v% q: ^; d
1 f, c8 X& \/ H8 b2 G) l; r3 a, s5 d5 S9 N9 l |" I' A. N
* I* h# J4 u T! N& x4 R
7 ?$ A! ?4 T) O0 i5 到svmtrain这一步报错$ C* K( h; T7 P% m; l7 |
??? Errorusing ==>svmtrain at 172/ s# g$ X7 E. {! P* J9 B
Group mustbe a vector.: T: y& L6 K/ ?1 i5 t
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
0 w0 Y5 q) M8 Y在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱…… |
|