libsvm的使用svm-scale和svm-train与svm-predict
转自http://blog.csdn.net/flydreamGG/article/details/4468995
其实,这部分写也是多余,google一下“libsvm使用”,就会N多的资源,但是,为了让你少费点心,在这里就简单的介绍一下,有不清楚的只有动动你的mouse了。需要说明的是,2.89版本以前,都是svmscale、svmtrain和svmpredict,最新的是svm-scale、svm-train和svm-predict,要是用不习惯,只需要把那四个exe文件名去掉中间的短横线,改成svmscale、svmtrain和svmpredict就可以了,我们还是按原来函数名的讲。
1. libSVM的数据格式
Label 1:value 2:value ….
Label:是类别的标识,比如上节train.model中提到的1 -1,你可以自己随意定,比如-10,0,15。当然,如果是回归,这是目标值,就要实事求是了。
Value:就是要训练的数据,从分类的角度来说就是特征值,数据之间用空格隔开
比如: -15 1:0.708 2:1056 3:-0.3333
需要注意的是,如果特征值为0,特征冒号前面的(姑且称做序号)可以不连续。如:
-15 1:0.708 3:-0.3333
表明第2个特征值为0,从编程的角度来说,这样做可以减少内存的使用,并提高做矩阵内积时的运算速度。我们平时在matlab中产生的数据都是没有序号的常规矩阵,所以为了方便最好编一个程序进行转化。
2. svmscale的用法
svmscale是用来对原始样本进行缩放的,范围可以自己定,一般是[0,1]或[-1,1]。缩放的目的主要是
1)防止某个特征过大或过小,从而在训练中起的作用不平衡;
2)为了计算速度。因为在核计算中,会用到内积运算或exp运算,不平衡的数据可能造成计算困难。
用法:svmscale [-l lower] [-u upper]
[-y y_lower y_upper]
[-s save_filename]
[-r restore_filename] filename
其中,[]中都是可选项:
-l:设定数据下限;lower:设定的数据下限值,缺省为-1
-u:设定数据上限;upper:设定的数据上限值,缺省为 1
-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;
-s save_filename:表示将缩放的规则保存为文件save_filename;
-r restore_filename:表示将按照已经存在的规则文件restore_filename进行缩放;
filename:待缩放的数据文件,文件格式按照libsvm格式。
默认情况下,只需要输入要缩放的文件名就可以了:比如(已经存在的文件为test.txt)
svmscale test.txt
这时,test.txt中的数据已经变成[-1,1]之间的数据了。但是,这样原来的数据就被覆盖了,为了让规划好的数据另存为其他的文件,我们用一个dos的重定向符 > 来另存为(假设为out.txt):
svmscale test.txt > out.txt
运行后,我们就可以看到目录下多了一个out.txt文件,那就是规范后的数据。假如,我们想设定数据范围[0,1],并把规则保存为test.range文件:
svmscale –l 0 –u 1 –s test.range test.txt > out.txt
这时,目录下又多了一个test.range文件,可以用记事本打开,下次就可以用-r test.range来载入了。
3. svmtrain的用法
svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型。
用法: svmtrain [options] training_set_file [model_file]
其中,options为操作参数,可用的选项即表示的涵义如下所示:
-s 设置svm类型:
0 – C-SVC
1 – v-SVC
2 – one-class-SVM
3 – ε-SVR
4 – n - SVR
-t 设置核函数类型,默认值为2
0 -- 线性核:u'*v
1 -- 多项式核: (g*u'*v+ coef 0)degree
2 -- RBF 核:exp(-γ*||u-v||2)
3 -- sigmoid 核:tanh(γ*u'*v+ coef 0)
-d degree: 设置多项式核中degree的值,默认为3
-gγ: 设置核函数中γ的值,默认为1/k,k为特征(或者说是属性)数;
-r coef 0:设置核函数中的coef 0,默认值为0;
-c cost:设置C-SVC、ε-SVR、n - SVR中从惩罚系数C,默认值为1;
-n v :设置v-SVC、one-class-SVM 与n - SVR 中参数n ,默认值0.5;
-p ε :设置v-SVR的损失函数中的e ,默认值为0.1;
-m cachesize:设置cache内存大小,以MB为单位,默认值为40;
-e ε :设置终止准则中的可容忍偏差,默认值为0.001;
-h shrinking:是否使用启发式,可选值为0 或1,默认值为1;
-b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1,默认0;
-wi weight:对各类样本的惩罚系数C加权,默认值为1;
-v n:n折交叉验证模式;
model_file:可选项,为要保存的结果文件,称为模型文件,以便在预测时使用。
默认情况下,只需要给函数提供一个样本文件名就可以了,但为了能保存结果,还是要提供一个结果文件名,比如:test.model,则命令为:
svmtrain test.txt test.model
结果说明见LibSVM学习(二)。
4. svmpredict 的用法
svmpredict 是根据训练获得的模型,对数据集合进行预测。
用法:svmpredict [options] test_file model_file output_file
其中,options为操作参数,可用的选项即表示的涵义如下所示:
-b probability_estimates——是否需要进行概率估计预测,可选值为0 或者1,默认值为0。
model_file ——是由svmtrain 产生的模型文件;
test_file—— 是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;
output_file ——是svmpredict 的输出文件,表示预测的结果值。
至此,主要的几个接口已经讲完了,满足一般的应用不成问题。对于要做研究的,还需要深入到svm.cpp文件内部,看看都做了什么。
libsvm的使用svm-scale和svm-train与svm-predict相关推荐
- 多目标函数 matlab 粒子群_【LIBSVM】基于群智能优化算法的支持向量机 (SVM) 参数优化...
前言 支持向量机 (Support Vector Machines,SVM) 有两个重要参数:一个是正则化系数(c),一个是核参数(g,高斯核函数).针对这两个参数的优化,在libsvm工具箱的基础上 ...
- ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员
ML之SVM:基于Js代码利用SVM算法的实现根据Kaggle数据集预测泰坦尼克号生存人员 目录 实验数据 设计思路 实现代码(部分代码) 实验数据 设计思路 实现代码(部分代码) /**js代码实 ...
- ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)
ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核) 目录 输出结果 设计思路 设计代码(部分代码) 输出结果 设计思路 设计代码(部分代码) var doTest = functi ...
- svm c++实现_机器学习笔记——SVM向量机
SVM支持向量机 此教程分为两个部分: 第一个部分旨在使用可视化的方式让同学们理解SVM的工作原理, SVM分割线, SVM的支持向量. 并且使用实例证明SVM的分割线只由支持向量唯一缺点, 与线性回 ...
- SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题?
SVM为什么采用间隔最大化?SVM为什么将原始问题转换为其对偶问题? SVM为什么采用间隔最大化? SVM的基本思想就是求解能够正确划分训练数据集并且几何间隔最大的分离超平面,这里的间隔最大化又叫做硬 ...
- SVM学习(一):SVM概念
SVM算法学习之旅,首先介绍一下SVM概念. 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出 ...
- 解密SVM系列(二):SVM的理论基础(转载)
解密SVM系列(二):SVM的理论基础 原文博主讲解地太好了 收藏下 解密SVM系列(三):SMO算法原理与实战求解 支持向量机通俗导论(理解SVM的三层境界) 上节我们探讨了关于拉格朗日乘 ...
- 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题
机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 文章目录 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 前言 1.从二维线性模型说起 2. 如何求解SVM ...
- python svm核函数_机器学习算法实践-SVM核函数和软间隔
前言 上文中简单总结了对于线性可分数据的SVM的算法原理,本文对于非线性可分以及有噪声存在的时候我们需要对基本SVM算法的改进进行下总结其中包括: 核函数在SVM算法中的使用 引入松弛变量和惩罚函数的 ...
- svm理论与实验之11:svm开发工具包LibSVM
徐海蛟博士 Teaching. 光说不练,很难真正理解svm的妙处,也难以真正实用.所以,有必要跟着徐海蛟老师一起练习svm.svm理论和工具已经很成熟了.童鞋们并不需要手写每一行代码.一个非常好用的 ...
最新文章
- Pandas 基础 (4)—— 汇总和计算描述统计
- ApacheCN 学习资源汇总 2019.3
- Android系统shell中的clear命令实现
- Leetcode: Remove Element
- Itext导出pdf文件
- java 应用程序无法运行_关于解决浏览器无法运行小应用程序问题
- 个人计算机有控制器和运算器吗,cpu是由控制器和运算器组成的对还是错
- 用java网络编程中的TCP方式上传文本文件及出现的小问题
- python基础 数据类型
- MongoDB 3.2 On CentOS
- 测试耳机的噪音测试软件,测试你的耳机音效,听这十首歌就够了
- 10.MATLAB方差分析
- Google Earth Engine——从Python中的经纬度坐标获取Modis正弦图块网格位置
- 算法初探 之 排序算法
- 电脑运行卡顿,只需三步轻松解决
- localtime 和 localtime_r
- matlab如何画趋势线,如何画趋势线?看完这10招,轻松掌握!(干货)
- 分布式数据库集成解决方案
- python接入微信支付_干货分享:微信跨境支付接入全流程
- 登陆凯叔讲故事显示未链接服务器,凯叔用户暴涨的秘密