找回密码
 注册
关于网站域名变更的通知
查看: 453|回复: 1
打印 上一主题 下一主题

matlab中libsvm的svmtrain函数用法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-21 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
这里的LIBSVM是一个由台湾大学林智仁(Lin Chih-Jen)教授等开发的SVM模式识别与回归的软件包,使用简单,功能强大,本文主要介绍其在Matlab中的使用。: ?3 j- K2 }* M
; F3 w: h8 n6 B
注意不是matlab自带的svm实现函数,自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题,参数可调节,功能更强大。
( d+ z* ]$ G" }% y# k- F4 u  ~
7 {$ P; s$ }; w" y2 F+ Glibsvm的配置很简单,只需要下载高级版本的matlab和libsvm,VC或VS编译实现很简单的,这里就不细讲了。. B' \' E: x, I
7 |% j. n6 E7 B* N+ w; I
两个步骤:训练建模——>模型预测
7 C) Q' ]& i8 y6 P- e  p3 C* g$ I& q2 c1 s4 K* R
分类  model = svmtrain(trainlabel, traindata, '-s 0 -t 2 -c 1.2 -g 2.8');! _, c* ~) M# s9 l

/ M; B: y7 ?: E) j回归  model = svmtrain(trainlabel, traindata, '-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
: E3 X& B! A! I; f/ g* h- r6 A
8 ]9 B8 N$ b* `0 g4 v5 ^参数说明:
! n0 I8 P$ G  X; Y* s
9 S4 O$ B$ t; _) ~! g- z-s svm类型:SVM设置类型(默认0)
# a+ m: ]; E2 E' g/ |+ ~$ A: x  0 -- C-SVC& y5 G5 y  j* [, U+ I
  1 --v-SVC
" j5 e! m- \) v- Y  2 – 一类SVM
% S% }! g% o! z/ E0 e8 `4 ?$ _, o  3 -- e -SVR+ t# H. H* ~. {  L5 d3 W7 D. d/ R
  4 -- v-SVR7 |* m6 u! g% y) E9 d% I
6 D$ C& R: F5 f+ b
-t 核函数类型:核函数设置类型(默认2)
" i  T$ U$ C4 H& P  0 – 线性:u'v+ ^  f0 e& o$ G( b1 |4 s) \' J3 C) d
  1 – 多项式:(r*u'v + coef0)^degree
9 Z7 y, c* o7 M4 b. ]$ j) a$ R5 a  2 – RBF函数:exp(-r|u-v|^2)/ K7 I6 I3 @, y( d. ~
  3 –sigmoid:tanh(r*u'v + coef0)! t4 u& U7 g% E7 K
( C1 y) n* j0 L/ Y
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)- Z4 U- R8 v2 Q: t* p: t0 L) l
8 ^" z/ n5 g6 D3 z4 Z
-c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1),惩罚系数0 R1 Q4 _; M+ S9 A  W" n# g

" P  `& A, X5 _0 n6 b1 i-n nu:设置v-SVC,一类SVM和v- SVR的参数(默认0.5)* ?3 s5 M/ H$ k
& d9 [( @$ f% t+ c1 Y  F
-p p:设置e -SVR 中损失函数p的值(默认0.1)
; z' l. ]  i( n
' U. r2 L0 o8 S( w1 g- q" y-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
, R2 n7 D7 f! b/ O5 @4 W! _% [4 E( ^& `7 k8 B$ v
-wi weight:设置第几类的参数C为weight*C(C-SVC中的C)(默认1)
" [; I) w1 v# B. `. D7 C; u
. P8 ~, Y: i5 A; N. F8 x  J-v n: n-fold交互检验模式,n为fold的个数,必须大于等于20 l8 q7 K# U. `: N$ n# N
# E/ V' Y5 Z! X5 _+ n
6 I  h3 i( q" o! r4 E

4 V0 T! w: L6 Y' Glibsvm使用误区----------------------
* L2 e' l! l: H5 G, ^& @, D6 }* P8 X6 }- t' V( o) g+ x
(1) 直接将训练集合和测试集合简单归一化到[0,1]区间,可能导致实验结果很差。$ B, \$ D$ q: _) F3 T" L

+ M; C) \' y+ R% ]: b. ]1 t- R) I(2) 如果样本的特征数非常多,那么就不必使用RBF核将样本映射到高维空间。) F7 o  l/ z  S, V* C
a) 在特征数非常多的情况下,使用线性核,结果已经非常好,并且只需要选择参数C即可。) D8 f  y. h/ F* v  o
b) 虽然说RBF核的结果至少比线性核好,前提下搜索整个的空间。
+ O# Y' j$ T2 Q* [; X. e(3) 样本数<<特征数的情况:推荐使用线性核,可以达到与RBF同样的性能。2 P+ F) X* S$ v( x8 D1 f8 W

" Q2 E1 F2 }; J+ n7 W# ]/ F% ?(4) 样本数和特征数都非常多:推荐使用liblinear,更少的时间和内存,可比的准确率。
+ _2 Y" q, [2 C7 K' u# [* d. v1 s$ P* G/ `# Y0 L
(5) 样本数>>特征数:如果想使用线性模型,可以使用liblinear,并且使用-s 2参数( d8 Z1 L+ ^9 {  U
+ [0 Z$ C2 ~7 ], g+ q

* h' O3 @8 N& h' R5 t2 V$ x' t+ {8 m2 `' g+ B" w- M
8 ?2 ^9 z) K' c( }% L5 G+ _' s
) g' i% `) j! U* o$ v0 F* s# q

该用户从未签到

2#
发表于 2020-7-21 15:23 | 只看该作者
matlab中libsvm的svmtrain函数用法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-5 02:45 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表