TA的每日心情 | 奋斗 2024-7-1 22:21 |
|---|
签到天数: 2014 天 [LV.Master]伴坛终老
- 自我介绍
- 数学中国站长
群组: 数学建模培训课堂1 群组: 数学中国美赛辅助报名 群组: Matlab讨论组 群组: 2013认证赛A题讨论群组 群组: 2013认证赛C题讨论群组 |
3#
发表于 2014-8-23 22:13
|只看该作者
|
|邮箱已经成功绑定
网上找到这个总结的不错,你可以借鉴!# j- D/ g9 u! b8 V m2 Z
4 H' R, O) [' Y% U' M, `( O b
在matlab上使用libsvm工具箱使用错误及解决方法汇总
7 |/ [+ C9 o( ]3 g# a8 ~首先附上使用过程
" h( \# U* g9 q2 w6 G' _; o1 f! Istep1: 输入>>mex -setup
- u6 v- n; T2 @1 ?6 l step2:
3 |. `0 m$ Z5 O% u Please choose yourcompiler for building external interface (MEX) files: $ W4 q& K+ a. ]; u6 A: m0 t& _* [
Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y
+ [' F7 t# O, I1 } step3:; _$ K" H3 w) U* q! X0 d% z/ r
Select a compiler:
. k: l7 z( x" T. Q( }: b8 m( A. }2 K- e9 Q/ e
! P& O1 Z2 G% Z* V5 i5 ` [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
/ S9 d& f' W2 s1 \" O P [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 $ e( d& ~8 \6 Y: g. E+ r
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 2 N0 G* q+ P8 p( P6 g
[0] None ; b( T( [; A1 C) w* k2 j
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 + n; `, c" Q5 u, E' S1 j6 w& T4 w) M& z& E
我选择了 【2】6 [# G- _/ N" k; a- _. e2 O7 }
step4:5 e) I3 Z) j: r4 t
Compiler: Microsoft Visual C++ 2008 SP1
. N9 Y/ N* W7 A& B- N9 N Location:e:\Program Files\Microsoft Visual Studio 9.0 7 F. X+ L( Y- A7 t/ \' M
Are thesecorrect [y]/n? 路径是否正确 是的就选y / z$ E( Z8 [; ?5 b/ I- }( y: K8 n+ g
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
. }" x! N. ]" ~2 C7 VStep 5 . K' B6 c# I5 d$ A$ X& n; T
Make
" e3 |! z8 `# H' F1 n. z3 s后面就是:
, S9 G4 v0 l2 P/ _% Gload heart_scale.mat(此处无分号)+ ?( R2 f' c( ], ~% J& z5 _
train = heart_scale_inst;9 j$ y7 V7 v, j, ^) F! @8 R
train_label=heart_scale_label;
# i' D) ?* E- h0 e* g0 Ftest=train;
8 [2 Z! ^2 F/ dtest_label=train_label;5 b& z9 Y" Q! Z: w' H
model=svmtrain(train_label,train,'-c 2 -g0.01');/ J) r2 s- o m5 z4 x: p
[predict_label,accuracy]=svmpredict(test_label,test,model);
7 \* N8 ]8 m3 K* x$ @19 _( g" u# D0 q5 L
make这一步报错
# n$ Z9 R( P' x4 N0 R: x' t8 pError using mex (line 206)
! N9 z2 b' ^% x$ X* H$ U' GUnable to complete successfully.) A) u& F" }% Z. z( J, L
Error in make (line 1)1 K! B0 f5 {9 V' Y: D
% This make.m is for MATLAB and OCTAVE
) Y& `. I9 Y# H9 sunder Windows, Mac, and Unix
2 b& Q2 A+ Z# c+ J. S在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
8 d* T) \4 k6 @! _# h
6 m3 c+ T. c. H9 ?2 还有一个make这一步出现的错误3 Make时出错
) I6 y* \. @! ^0 GUndefined function orvariable 'make'
, H4 S/ P' H7 n解决方法为:
5 \0 J L6 w* K+ `* N0 M7 q- {1 w设置matlab的path
# v& K, G$ O" L* K 方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)) T$ m3 C/ o# Z6 A0 G
还要记得把current folder 设为matlab所在的路径
# s- N; J0 ^) W. P- @, N) ^% G+ x3 输入load heart_scale.mat;报错6 l" o) A' A) ^9 W) M
Error using load! Y3 m& B# J! o1 ^% k1 s
Unable to read file heart_scale.mat;: No
0 I% l. B: l1 `3 \1 e# e( K$ vsuch file or directory.1 k- r( M2 k7 y* o u0 X6 S/ L& _
这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)% @' S4 f; u# {; ], z+ o1 Y
42 w% X, t% N- P. c. L) }
load 这一步报错
/ Q9 W0 ~! T" |. G8 f0 X! o; l??? Error using ==>load
0 f2 }5 c. e0 Z0 `Number of columns on line 2 of ASCII file D:\Program
" a/ R0 ^. t8 H7 dFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
0 s+ F8 K m0 c) M" h; ymust be the same as previous lines., t, k" U9 _6 M) N
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
2 \4 z* Z- a0 b" a# V% t一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
+ J% k3 M4 L) J+ i使用如下: [label_vector, instance_matrix] =libsvmread('filename');
3 A k9 D+ b2 T3 }5 J此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');2 h, P/ J/ z+ e% Y4 ~: K
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。
$ U- \. F& D4 k6 t. h但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
: [9 V1 ^2 c8 n* V8 h% k! l7 T. v! J" y
+ c. l% P2 h5 t$ ?/ Y
C4 |$ r1 V0 v1 ~2 S1 N9 W s
8 Y2 l7 J1 c8 {! U! `; K& e! \5 到svmtrain这一步报错" h2 V6 W. c' B- H5 I
??? Errorusing ==>svmtrain at 172
6 j- M5 r( F3 }: ]7 h ]Group mustbe a vector.+ C3 ]# [2 \$ v' A2 ~( v
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了5 O }# a1 N* S+ n
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱…… |
|