开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

LIBSVM使用与自定义核函数

简介:
+关注继续查看

一、LIBSVM训练函数使用如下:

1
model = svmtrain(trainlabel,traindata,'-s 0 -t 2 -c 1.2 -g 2.8')

trainlabel:训练样本标签

traindata:训练样本数据集,行向量为样本值


1、参数-s,表示SVM类型,默认值为0,可选类型有:

0 -- C- SVC

1 -- nu - SVC

2 -- one-class-SVM

3 -- e - SVR

4 -- nu-SVR


2、参数-t,表示核函数类型,默认为2,可选核函数有:

0 -- 线性核函数: K(u,v)=u'*v

1 -- 多项式核函数: K(u,v)=(gamma*u'*v + coef0)^d

2 -- RBF核函数: K(u,v)=exp(-gamma*||u-v||^2)

3 -- sigmoid核函数: K(u,v)=tanh(gamma*u'*v + coef0)

4 -- 自定义核函数

u、v为数据集中的两个样本

核函数对应参数:

   线性核函数,没有专门需要设置的参数

   多项式核函数,有三个参数。-d用来设置多项式核函数的最高此项次数,也就是公式中的d,默认值是3 。-g用来设置核函数中的gamma参数设置,也就是公式中的gamma,默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,默认值是0

   RBF核函数,有一个参数。-g用来设置核函数中的gamma参数设置,默认值是1/k(k是类别数)。

   sigmoid核函数,有两个参数。-g用来设置核函数中的gamma参数设置,默认值是1/k(k是类别数)。-r用来设置核函数中的coef0,默认值是0。


3、参数-c cost,表示惩罚系数,设置C- SVC、e - SVR、n - SVR中从惩罚系数C,默认值为1。


4、参数-wi weight,对各类样本的惩罚系数C加权,默认值为1。


5、参数-v n,n折交叉验证模式。


二、自定义核函数

   使用-t 4参数时,可以使用自定义核函数,根据自定义核函数求出核矩阵,自定义核函数使用方法如下:比如线性核函数 是 K(u,v)=u'*v,设训练集是train_data,设训练集有150个样本 , 测试集是test_data,设测试集有120个样本,则

训练集的核矩阵: ktrain = train_data*train_data'

测试集的核矩阵: ktest = test_data*train_data'

想要使用-t 4参数还需要把样本的序列号放在核矩阵前面 ,形成一个新的矩阵:

% 使用线性核函数 K(u,v) = (u' * v)

1
2
3
4
5
6
Ktrain = train_data * train_data';    %求训练集核矩阵
Ktrain = [(1:150)',ktrain];     %样本的序列号放在核矩阵前面
model = svmtrain(train_label, Ktrain, '-t 4');  % 输入 Ktrain
Ktest = test_data*train_data';  %求测试集核矩阵
Ktest = [(1:120)', Ktest];      %样本的序列号放在核矩阵前面
[predict_label, accuracy, P1] = svmpredict(test_label,Ktest,model); % 输入Ktest

三、混合核函数

   多项式核函数有良好的全局性能,具有很强的外推能力,并且多项式的次数越低,其外推能力越强。而Gauss径向基核函数则是局部性强,其内推能力随着参数的减小而减弱。通过把两类核函数结合起来,发挥它们各自的优点,得到学习能力和推广性都很强,兼具良好的外推和内推能力的核函数,利用多项式核函数和径向基核函数构建混合核函数分类模型,表达式为:

wKiom1fiKvKSNAz2AAAXL-n5Zo0088.png


   式中:Kpoly为多项式核函数;Krbf为径向基核函数;λ∈(0,1)。当λ较大时,混合核函数的性能表现得优良一些。





本文转自 stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1854927

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
安卓的自定义布局的使用
安卓开发中经常会遇到一些需求,它要求的视图用安卓原生控件表达不出来,这时候需要我们自定义一些view,这时候就是头疼的时候,其实很多情况都是UI采用了苹果的设计图,结果安卓端的控件不一样,因此需要重新设计来展现与IOS端相同的布局样式。
8 0
Java中关于自定义标签在JSP中的使用
当JSP的内置标签和JSTL标签库中的标签都满足不了我们的业务需求时,我们就需要使用自定义标签来方便快捷地帮助我们完成业务需求。
14 0
Java自定义函数及函数重载
Java自定义函数及函数重载
53 0
前端使用自定义字体方案
工作中我相信大家都遇到过设计要求使用一些奇奇怪怪字体的需求,然后因为字体文件太大,选择切图。 我这个需求就厉害了,用户发的文章可以选择字体。这文章中可以出现的字就太多了,显然上个方案就不合适了,那我们是这么做的呢? 废话不多说,先上 demo,别问我 demo 是谁。 接口地址:https://www.lilnong.top/createfont?txt=%E6%B5%8B%E8%AF%95%E6%96%87%E5%AD%97 页面地址: https://www.lilnong.top/static/html/createfont.html
130 0
[Hive]Hive自定义函数UDF
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/53244868 当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数 用户自定义函数(user defined function),针对单条记录。
2970 0
三、自定义函数
自定义函数就是我们自己定义的函数,在PHP中自定义函数格式如下: function funname(arg1, arg2, arg3......){ //TODO return values; }   view source print? 01.<?php  02.function f
1235 0
C程序中引用自定义的C函数模块
原文:C程序中引用自定义的C函数模块   我们知道,刚开始接触C语言编程,一般都是在一个.c或者.cpp(以下只说.c)的文件中编写代码,其中一定会有一个入口函数, 也就是main()函数,你可以将程序代码全部写在main函数里,当然如果你想要程序更加模块化,也可以将一些操作写在一个函数 里,这些函数的声明和定义也都是在main函数中。
672 0
java 如何自定义异常 用代码展示 真心靠谱
先建两个自定义的异常类 ChushufuException类 class ChushufuException extends Exception { public ChushufuException(String ms...
571 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
机器能理解上下文吗-RNN和LSTM神经网络的原理及应用
立即下载
机器能理解上下文吗 RNN和LSTM神经网络的原理及应用
立即下载
机器学习中,使用Scikit-Leam简单处理文本数据
立即下载