TA的每日心情 | 奋斗 2024-7-1 22:21 |
|---|
签到天数: 2014 天 [LV.Master]伴坛终老
- 自我介绍
- 数学中国站长
群组: 数学建模培训课堂1 群组: 数学中国美赛辅助报名 群组: Matlab讨论组 群组: 2013认证赛A题讨论群组 群组: 2013认证赛C题讨论群组 |
3#
发表于 2014-8-23 22:13
|只看该作者
|
|邮箱已经成功绑定
网上找到这个总结的不错,你可以借鉴!
% G( n( H% K3 _* E; U9 C
) p- e' Y. X: Z5 C在matlab上使用libsvm工具箱使用错误及解决方法汇总! f- n* d8 W5 Q5 J6 p
首先附上使用过程: P- |; n5 X) V) Q/ w+ M
step1: 输入>>mex -setup) F0 w( v' W9 v9 H$ t. k/ y3 H
step2:0 ~8 u$ }' X! @* w0 Z' O% A
Please choose yourcompiler for building external interface (MEX) files: / V) w1 E( b+ K+ Y
Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y
% k9 w& J6 G- W, k; l step3:# s) y) O8 y- f, T! p! X
Select a compiler:- \" H1 z0 M' l7 A
% n( P: A9 L# b+ V
1 q4 \+ ]2 m2 K3 z
[1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
, ?" O' t+ G/ W [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 # ]7 H1 X, ?) W: S: V
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 6 j5 c" b( f! i: A3 N
[0] None * p J( @/ Y" f6 D
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行
6 E( H. w7 o: Q" i 我选择了 【2】
9 G7 |- O3 e, G0 M step4:
5 m$ d" S& l$ C; l0 [2 E Compiler: Microsoft Visual C++ 2008 SP1
+ s8 S+ v. q5 o6 s7 R- n Location:e:\Program Files\Microsoft Visual Studio 9.0
+ n9 `. j% a/ V$ T# `# k Are thesecorrect [y]/n? 路径是否正确 是的就选y : l) C( O3 U$ R o* k: x
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。8 x8 {' r* B' t# n# I& t8 g, k: W, y
Step 5
) @4 p$ o3 K- O& t5 G1 VMake
( ?' ~" P) `1 `7 }; n* S" z9 H后面就是:/ S: E+ m: i! W ]: g& e. O0 }3 K
load heart_scale.mat(此处无分号)' j! v! a) \2 J
train = heart_scale_inst;
: s- [$ g E+ Otrain_label=heart_scale_label;
2 W8 W7 W: Q; f1 t$ Wtest=train;' @) E: h( m0 ^
test_label=train_label;
1 R. \3 c* a- N; m1 M9 W5 Ymodel=svmtrain(train_label,train,'-c 2 -g0.01');9 v. n7 {' p. {% Z8 h* T5 c) |
[predict_label,accuracy]=svmpredict(test_label,test,model);
. {& ?: Y- h; ?1
* u( f* E7 }1 q# @& A1 O5 t0 K' Amake这一步报错
3 J' Y2 J( o) uError using mex (line 206)$ y0 w' ]. A9 r( P7 C
Unable to complete successfully.
x1 | G. @5 L, u5 gError in make (line 1)" }: Z9 n; s$ E" i0 m
% This make.m is for MATLAB and OCTAVE% `$ f9 i/ w9 z+ D0 _. Q* ^, [
under Windows, Mac, and Unix" T. U$ k" t* s* C" _
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~ T( O3 [3 s$ M6 |& r6 }1 h$ f
f7 T' d# f3 P2 还有一个make这一步出现的错误3 Make时出错* m! y* E N- Y4 i/ v( ~
Undefined function orvariable 'make'5 p. }7 Q$ @; X& l
解决方法为:4 n$ v) R9 v& h4 P
设置matlab的path ; b3 o- ]# P" U1 S% P5 s
方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
/ p: t& T$ T) @- V& g还要记得把current folder 设为matlab所在的路径
* E N0 h6 j+ m+ p5 b* J. D3 输入load heart_scale.mat;报错
+ {+ Q/ O$ t6 ^ c) }& UError using load; ?/ y8 O" r. i( ?; \1 l3 ?
Unable to read file heart_scale.mat;: No, K- x8 a4 \7 P2 d) X* r; h
such file or directory.
) c& p9 ]8 R( l* p9 X这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
+ ^- B5 A+ o+ U/ j4
' C/ i- T" X, ]# f4 hload 这一步报错) s3 T) [, F/ L9 s5 a
??? Error using ==>load' [, Z1 r/ `) O& P, u
Number of columns on line 2 of ASCII file D:\Program: D& ?7 \7 W9 v( C
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale( X) W' X+ C; [; X
must be the same as previous lines.! }' ^8 |. G" X! ~8 |, E6 l
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
9 C7 b/ ~9 _% c一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()" ~( ^- a* Y& _* R
使用如下: [label_vector, instance_matrix] =libsvmread('filename');3 H4 e1 ~3 W9 j" [" N; k
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');( R; M' }3 f' _% \
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。
5 \/ e. i) q; |' |但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!# H+ b, u( z' q" l3 }5 n
9 \" B: j I5 o3 k4 z1 S
+ _* u6 a3 c, M* P0 P1 }0 p
3 h3 K- S! z# l8 a3 e, n1 y7 I) E. Y
5 到svmtrain这一步报错" @1 d" a3 x* U* e" v
??? Errorusing ==>svmtrain at 172! \; f \' w9 x7 d
Group mustbe a vector.
m+ H8 Z c/ z b: c是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了/ J; R4 U9 k- h$ E
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱…… |
|