TA的每日心情 | 奋斗 2024-7-1 22:21 |
|---|
签到天数: 2014 天 [LV.Master]伴坛终老
- 自我介绍
- 数学中国站长
群组: 数学建模培训课堂1 群组: 数学中国美赛辅助报名 群组: Matlab讨论组 群组: 2013认证赛A题讨论群组 群组: 2013认证赛C题讨论群组 |
3#
发表于 2014-8-23 22:13
|只看该作者
|
|邮箱已经成功绑定
网上找到这个总结的不错,你可以借鉴!
9 O# h( J- D0 g! C' ^3 `
) g, D: q0 h6 y3 ]% W: Y. G在matlab上使用libsvm工具箱使用错误及解决方法汇总( ~% o! w* q5 _+ m! |7 w3 |$ w1 k: b1 n
首先附上使用过程
4 S4 w. f! l% m$ e$ v2 X+ istep1: 输入>>mex -setup7 W; i8 R8 H: I2 @7 M
step2:
. {) {7 U( q& C& U Please choose yourcompiler for building external interface (MEX) files: 0 G# E. c* k7 s9 @3 P0 g/ N: W. F) v" w/ N
Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y
' G' o# k: H& E* n! j step3:& c+ c5 L+ l6 a6 P0 x
Select a compiler:6 ~* ]9 ^1 \1 i+ S3 y5 p* m8 L
% b, Z: t+ D) {5 E) \6 }" v2 P! M; _; F8 V0 v# V
[1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
6 G" K) z, Q, h- X. n1 ~! B$ f [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 1 h- u. H3 Q% U* V1 z
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio & K# m; Z+ s( C9 v) s, P) l
[0] None
0 I* S' p3 i/ K6 I$ S/ t# S [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 6 t+ I# @5 x* Z" `6 K5 Z
我选择了 【2】
8 m- U8 }2 ^9 ~- C step4:1 o2 z: Y9 L/ l0 C$ |3 \
Compiler: Microsoft Visual C++ 2008 SP1 2 i) ?4 ?- ?8 G
Location:e:\Program Files\Microsoft Visual Studio 9.0 ( F; ^: h6 A, p5 p# T
Are thesecorrect [y]/n? 路径是否正确 是的就选y ; @; @3 p m" Q( C( G- w
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
. k. @" Q5 v5 c( K6 s+ LStep 5 # M' a4 B1 G; c& Z6 }
Make
8 E3 X3 ^5 Z9 W6 N+ w) W后面就是: X9 H7 d9 U% D+ Q6 o! G
load heart_scale.mat(此处无分号)5 K$ L/ x* Y) r- ^- |- m0 ?
train = heart_scale_inst;
$ F3 ^4 k6 V6 ~6 ftrain_label=heart_scale_label;0 x) g8 r/ o- m. W+ \
test=train;( J9 e4 j) r1 v+ K0 l. l% e& X
test_label=train_label;
' Q& G+ Y7 K; \+ L# Q% M" Emodel=svmtrain(train_label,train,'-c 2 -g0.01');5 O {1 Y- m7 F7 @' A
[predict_label,accuracy]=svmpredict(test_label,test,model);
5 l- c/ N& \4 u" G1$ y1 S8 m' Y ]5 S) X
make这一步报错+ C9 m/ q( q' M* ~% b# M8 j
Error using mex (line 206)6 f/ a; w* f: {
Unable to complete successfully.9 l" m( [( Y2 T4 o
Error in make (line 1)
- k! ~7 |2 T: {8 t) z" u% This make.m is for MATLAB and OCTAVE7 R# w7 K6 F, X) N5 w; Y
under Windows, Mac, and Unix
' `$ I3 K5 s9 s: p; P. b" n在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
, Y$ O' _3 T9 J! j1 {
7 M$ o' o. e0 r2 Z3 e6 @$ `2 还有一个make这一步出现的错误3 Make时出错5 C/ u ^" F) E9 J, H; N5 ~: _$ U
Undefined function orvariable 'make', J1 P9 z/ `* W- |6 [4 n" a
解决方法为:' _ M# y4 F2 w, N7 C0 ?+ h! g
设置matlab的path
Y* X' r. K: r% u 方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
1 _- K5 E3 ^: G' K( C还要记得把current folder 设为matlab所在的路径
% f7 h" s6 U% @' A4 Z3 输入load heart_scale.mat;报错4 z$ [. P* N7 M& `# s. p+ T
Error using load8 w/ p& K) r' b8 w
Unable to read file heart_scale.mat;: No
! x% f, y+ f) R) p# zsuch file or directory.
1 P0 D q2 [. P这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
2 u8 M, W( U# d. p" Q& x41 u, H) h; S$ P: ?4 |
load 这一步报错; \2 C3 Z( S7 d2 V
??? Error using ==>load% P4 e" c3 o( _+ n
Number of columns on line 2 of ASCII file D:\Program! V( N. {: a& q1 p$ g7 t8 h2 {
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale c6 [5 D) L" G% P0 d4 u
must be the same as previous lines.
9 q4 {2 J- h# D" [官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)! `3 C# x) ?% V& N+ ^/ |) e2 [! U
一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()3 j/ ?5 F5 d/ P! d
使用如下: [label_vector, instance_matrix] =libsvmread('filename');
- ]4 v: t6 y9 X( _此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');0 h4 y$ I8 n3 q. ?
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。
2 o6 }' l: I1 H0 y但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
3 ~% p+ x. S' P, u5 H
; `4 p, [% f; O* W) G6 R) v3 m8 }+ v& Y G* J8 f3 r: p& A
+ O9 d* l& n% z
2 Y6 o2 O9 T1 f7 A" s+ E% {) m5 到svmtrain这一步报错
0 Y, E; ^9 r/ c9 U! B- Q! d??? Errorusing ==>svmtrain at 172. e i4 n8 p# P5 e' p G. a
Group mustbe a vector.
$ E( h' l: R7 e是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了+ Q/ e8 q. T5 Q C6 \
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱…… |
|