matlab自带工具箱svmtrain函数参数的选择

本文详细介绍了在MATLAB中使用svmtrain函数进行支持向量机训练的过程,特别是如何选择和应用不同的核函数,包括线性、多项式、高斯径向基等,以及这些核函数在不同数据类型下的适用性。同时,文章提供了实例代码,帮助读者更好地理解和应用svmtrain函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1、在使用svmtrain函数时,需要使用核函数进行分类,百度大部分的都是关于libsvm下的核函数使用,看到了一篇写matlab的svmtrain参数选择,如下

https://blog.youkuaiyun.com/shenziheng1/article/details/54178685/

还可以使用 help svmtrain查看svmtrain函数的参数示例和使用示例,如需要阅读体验更好,请使用doc svmtrain 查看

例子:

 1 e.g.
 2 clc;clear all
 3 load fisheriris %载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],
 4 % UCI数据库http://archive.ics.uci.edu/ml/该数据库得到大家认可
 5 %其中meas是150*4的矩阵代表着有150个样本每个样本有4个属性描述
 6 %species代表着这150个样本的分类 
 7 data = [meas(:,1), meas(:,2)]; %在这里只取meas的第一列和第二列,即只选取前两个属性.
 8 groups = ismember(species,'setosa');
 9 %由于species分类中是有三个分类:setosa,versicolor,virginica,为了使问题简单,我们将其变为二分类问题:Setosa
10 %and non-Setosa,groups中只有0和1
11 [train, test] = crossvalind('holdOut',groups);%生成索引,一部分用来训练,其他部分用来测试
12 cp = classperf(groups);%随机选择训练集合测试集,其中cp作用是后来用来评价分类器的.*/
13 svmStruct = svmtrain(data(train,:),groups(train),'showplot',true);
14 %svmStruct= svmtrain(data(train,:),groups(train),'Kernel_Function','rbf','RBF_Sigma',1,'boxconstraint',1,'showplot',true);
15 %使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.

 上述 ‘Kernel_Function’表示核函数,包括'linear'  (线性)默认、 'quadratic' (二次)、 'polynomial' (多项式默认三阶)、'rbf'(高斯径向基函数)

线性核函数用于数据线性可分的情况下,后面三个一般应用于数据线性不可分的情况(将而二维数据映射到更高的维度从而使数据可区分)

吴恩达老师 机器学习讲义  https://pan.baidu.com/s/1boGzeDx

      机器学习视频  http://open.163.com/special/opencourse/machinelearning.html

高斯核函数为

$$f(X_{i})=e^{-\frac{||x_{i}-l_{i}||^2}{2\sigma^2 }}$$

‘Rbf_sigma’表示高斯核函数的参数,

’boxconstraint‘表示惩罚系数,类同于libsvm中svmtrain的参数c

C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

 

转载于:https://www.cnblogs.com/zx-zhang/p/9972173.html

### MATLAB 中 `svmtrain` 函数的使用 #### 是否为MATLAB内置函数 需要注意的是,在较新的MATLAB版本中,官方已经移除了`svmtrain`这一名称的函数。自2018版以后,原生环境中不再提供名为`svmtrain`的支持向量机训练接口[^2]。 对于早期版本(如2015a),`svmtrain`确实是作为内部工具箱的一部分存在用于构建支持向量机模型[^1]。然而随着软件更新迭代,为了改进性能功能扩展,MathWorks公司决定替换旧有的API设计,转而推荐用户采用更为现代化和支持更多特性的替代方案——即`fitcsvm`等新系列命令来完成相似的任务处理工作流程。 #### 使用方式 尽管如此,如果开发者仍然希望沿用`svmtrain`命名习惯来进行编程开发,则可通过第三方库`libsvm`获得兼容性支持。具体操作如下: - 安装并配置好`libsvm`至本地环境; - 利用该外部资源所提供的同名方法实现预期目标逻辑编码过程[^3]。 下面给出一段基于`libsvm`下的简单示例代码片段展示如何加载数据集并对样本实施分类学习任务: ```matlab % 加载LIBSVM中的鸢尾花数据集 load('fisheriris'); species = grp2idx(species); % 将类别标签转换成数值形式 X = meas; Y = species; % 调整参数设置 options = '-s 0 -t 2 -c 1'; % 训练模型 model = svmtrain(Y, X, options); disp(model); ``` 此段脚本首先准备好了输入特征矩阵`X`和对应的输出变量`Y`,接着定义了一些必要的超参选项字符串供后续传递给实际执行的学习算法实例化对象时选用。最后一步则是正式调用了来自附加组件里的核心API完成了整个建模环节的工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值