- 浏览: 3566849 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
首先下载Libsvm、Python和Gnuplot:
l libsvm的主页http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 上下载libsvm (我自己用2.86版本)
l python的主页http://www.python.org 下载 python (我自己用2.5版本)
l gnuplot的主页http://www.gnuplot.info/ 下载gnuplot (我用4.0版本)
LIBSVM 使用的一般步骤是:
1)按照LIBSVM软件包所要求的格式准备数据集;
2)对数据进行简单的缩放操作;
3)首要考虑选用RBF 核函数;
4)采用交叉验证选择最佳参数C与g ;
5)采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;
6)利用获取的模型进行测试与预测。
1)LIBSVM使用的数据格式
该软件使用的训练数据和检验数据文件格式如下:
[label] [index1]:[value1] [index2]:[value2] ...
[label] [index1]:[value1] [index2]:[value2] ...
一行一条记录数据,如:
+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1
这里(x,y)à((0.708,1,1, -0.320, -0.105, -1), +1)
label 或说是class, 就是你要分类的种类,通常是一些整数。
index 是有順序的索引,通常是连续的整数。
value 就是用来 train 的数据,通常是一堆实数。
2)对数据进行简单的缩放操作
扫描数据. 因为原始数据可能范围过大或过小, svmscale可以先将数据重新scale (縮放) 到适当范围使训练与预测速度更快。
svmscale.exe的用法:svmscale.exe feature.txt feature.scaled
默认的归一化范围是[-1,1],可以用参数-l和-u分别调整上界和下届,feature.txt是输入特征文件名 输出的归一化特征名为feature.scaled
3) 考虑选用RBF 核函数
训练数据形成模型(model),实质是算出了wx+b=0中的w,b.
Svmtrain的用法:svmtrain [options] training_set_file [model_file]
其中options涵义如下:
-s svm类型:设置SVM 类型,默认值为0,可选类型有:
0 -- C- SVC
1 -- nu - SVC
2 -- one-class-SVM
3 -- e - SVR
4 -- nu-SVR
-t 核函数类型:设置核函数类型,默认值为2,可选类型有:
0 -- 线性核:u'*v
1 -- 多项式核:(g*u'*v+ coef0)degree
2 -- RBF 核:exp(-||u-v||*||u-v||/g*g)
3 -- sigmoid 核:tanh(g*u'*v+ coef 0)
-d degree:核函数中的degree设置,默认值为3;
-g r(gama):核函数中的函数设置(默认1/ k);
-r coef 0:设置核函数中的coef0,默认值为0;
-c cost:设置C- SVC、e - SVR、n - SVR中从惩罚系数C,默认值为1;
-n nu :设置nu - SVC、one-class-SVM 与nu - SVR 中参数nu ,默认值0.5;
-p e :核宽,设置e - SVR的损失函数中的e ,默认值为0.1;
-m cachesize:设置cache内存大小,以MB为单位(默认40):
-e e :设置终止准则中的可容忍偏差,默认值为0.001;
-h shrinking:是否使用启发式,可选值为0 或1,默认值为1;
-b 概率估计:是否计算SVC或SVR的概率估计,可选值0 或1,默认0;
-wi weight:对各类样本的惩罚系数C加权,默认值为1;
-v n:n折交叉验证模式。
其中-g选项中的k是指输入数据中的属性数。操作参数 -v 随机地将数据剖分为n 部分并计算交叉检验准确度和均方根误差。以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。training_set_file是要进行训练的数据 集;model_file是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。举个例子如下:
C:\libsvm-2.85\windows>svmtrain heart_scale
*
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
现简单对屏幕回显信息进行说明:
#iter为迭代次数,
nu 与前面的操作参数-n nu 相同,
obj为SVM文件转换为的二次规划求解得到的最小值,
rho 为判决函数的常数项b,
nSV 为支持向量个数,
nBSV为边界上的支持向量个数,
Total nSV为支持向量总个数。
训练后的模型保存为文件*.model,用记事本打开其内容如下:
svm_type c_svc % 训练所采用的svm类型,此处为C- SVC
kernel_type rbf %训练采用的核函数类型,此处为RBF核
gamma 0.0769231 %设置核函数中的g ,默认值为1/ k
nr_class 2 %分类时的类别数,此处为两分类问题
total_sv 132 %总共的支持向量个数
rho 0.424462 %决策函数中的常数项b
label 1 -1%类别标签
nr_sv 64 68 %各类别标签对应的支持向量个数
SV %以下为支持向量
1 1:0.166667 2:1 3:-0.333333 4:-0.433962 5:-0.383562 6:-1 7:-1 8:0.0687023 9:-1 10:-0.903226 11:-1 12:-1 13:1
0.5104832128985164 1:0.125 2:1 3:0.333333 4:-0.320755 5:-0.406393 6:1 7:1 8:0.0839695 9:1 10:-0.806452 12:-0.333333 13:0.5
1 1:0.333333 2:1 3:-1 4:-0.245283 5:-0.506849 6:-1 7:-1 8:0.129771 9:-1 10:-0.16129 12:0.333333 13:-1
1 1:0.208333 2:1 3:0.333333 4:-0.660377 5:-0.525114 6:-1 7:1 8:0.435115 9:-1 10:-0.193548 12:-0.333333 13:1
4)采用交叉验证选择最佳参数C与g
通常而言,比较重要的参数是 gamma (-g) 跟 cost (-c) 。而 cross validation (-v)
的参数常用5。那么如何去选取最优的参数c和g呢?libsvm 的 python 子目录下面的 grid.py 可以帮助我们。 此时。其中安装python2.5需要(一般默认安装到c:\python25
下),将gnuplot解压。安装解压完毕后,进入\libsvm\tools目录下,用文本编辑器(记事
本,edit都可以)修改grid.py文件,找到其中关于gnuplot路径的那项(其默认路径为
gnuplot_exe=r"c:\tmp\gnuplot\bin\pgnuplot.exe"),根据实际路径进行修改,并保存。然
后,将grid.py和C:\Python25目录下的python.exe文件拷贝到libsvm\windows目录下,键入以下命令:$ python grid.py train.1.scale 执行后,即可得到最优参数c和g。
另外,至于下libsvm和python的接口的问题,在libsvm2.86中林老师已经帮助我们解决,在\libsvm\windows\python目录下自带了svmc.pyd这个文件,将该文件文件复制到
libsvm\python目录下,同时,也将python.exe文件复制到该目录下,键入以下命令以检验效
果(注意:.Py文件中关于gnuplot路径的那项路径一定要根据实际路径修改):
python svm_test.py
如果能看到程序执行结果,说明libsvm和python之间的接口已经配置完成,以后就可以直接在python程序里调用libsvm的函数了!
5) 采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型
$ svmtrain –c x –g x –v x training_set_file [model_file]
x为上述得到的最优参数c和g的值,v的值一般取5。
6)利用获取的模型进行测试与预测
使用Svmtrain训练好的模型进行测试。输入新的X值,给出SVM预测出的Y值
$ Svmpredict test_file model_file output_file
如:./svm-predict heart_scale heart_scale.model heart_scale.out
Accuracy = 86.6667% (234/270) (classification)
这里显示的是结果
一个具体使用的例子。
以libsvm中的heart_scale作为训练数据和测试数据,同时已经将python安装至c盘,并将grid.py文件中关于gnuplot路径的默认值修改为实际解压缩后的路径,将
heart_scale、grid.py和python.exe拷贝至\libsvm\windows文件夹下。
./svm-train heart_scale
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
此时,已经得到heart_scale.model,进行预测:
./svm-predict heart_scale heart_scale.model heart_scale.out
Accuracy = 86.6667% (234/270) (classification)
正确率为Accuracy = 86.6667%。
./python grid.py heart_scale
得到最优参数c=2048,g=0.0001220703125.
./svm-train -c 2048 -g 0.0001220703125 heart_scale得到model后,由./svm-predict heart_scale heart_scale.model heart_scale.out得到的正确
率为Accuracy = 85.1852%.这块还有点迷惑?为什么正确率降低了?
当然也可以结合subset.py 和 easy.py 实现自动化过程。
如果要训练多次,可以写个批处理程序省好多事。
这里举个例子:
::@ echo off
cls
:: split the data and output the results
for /L %%i in (1,1,1000) do python subset.py b59.txt 546 b59(%%i).in8 b59(%%i).out2
for /L %%i in (1,1,1000) do python easy.py b59(%%i).in8 b59(%%i).out2 >> result89.txt
这段批处理代码首先调用subset.py对文件b59.txt执行1000次分层随机抽样(对数据进行80-20%分割)然后调用easy.py 进行1000次参数寻优,把记录结果写到result89.txt中
(包括1000次训练的分类准确率和参数对)。
还可以调用fselect.py进行特征选择,调用plotroc.py进行roc曲线绘制。
发表评论
-
LibSvm结论参数
2011-11-23 08:37 3554本文转自Bluenight在《Libsvm 使 用 ... -
LIBSVM简介及其使用方法
2011-11-19 21:53 58035LIBSVM简介及其使用方法(台湾大学林智仁(Lin Chih ... -
LibSvm 使用说明 学习心得
2011-11-19 21:47 5068LibSvm 使用说明 学习心得 (本页内容来自互联网, ... -
libsvm与python的使用
2011-11-19 21:35 2909libsvm与python的使用 ... -
libsvm-2.91中python接口的使用方法
2011-11-19 21:31 4236libsvm-2.91中python接口的 ... -
LibSvm python
2011-11-19 21:29 1813LibSvm python 调试实验 ... -
libsvm的使用
2011-11-18 22:00 1620http://hi.baidu.com/sjk2412/blo ... -
libsvm支持向量机C-SVM和NU-Svm的区别
2011-11-17 14:49 15751c-svc和 nu-svc本质差不多 c-svc中c的范围是 ... -
Weka LibSVM (WLSVM)
2011-11-16 20:09 2388Weka LibSVM (WLSVM): Integrat ... -
LibSvm---API
2011-11-16 14:35 2346http://java-ml.sourceforge.net/ ... -
LIBSVM使用心得(JAVA)
2011-11-16 14:33 4662libsvm 是著名的SVM开源组件,目前有JAVA.C/C ... -
LIBSVM做回归预测
2011-11-16 14:26 2869LIBSVM做回归预测--终于弄通(原创) (2009- ...
相关推荐
《深入理解libsvm-mat-2.89-3与LibSvm:实践与学习心得》 LibSVM,全称“Library for Support Vector Machines”,是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一个开源软件库,主要用于支持向量机(SVM)...
《libsvm学习心得》 libsvm,全称“Library for Support Vector Machines”,是由台湾大学的Chih-Chung Chang和Chih-Jen Lin开发的一款开源工具,主要用于支持向量机(SVM)的学习与预测。这款强大的库在机器学习...
#### 五、使用心得与技巧分享 1. **数据预处理的重要性**:正确的数据预处理可以显著提高模型性能。 2. **选择合适的核函数**:根据问题的性质选择最适合的核函数。 3. **参数选择的影响**:合理设置惩罚系数`C`和...
在本主题中,我们将深入探讨如何使用C++和LIBSVM库来实现机器学习和样本分类。 1. **支持向量机(SVM)基本概念**: - SVM是一种基于结构风险最小化的分类模型,它的核心思想是找到一个超平面,使得两类样本之间的...
在这个文档中,我们将重点讨论如何在Java环境下使用LibSVM进行二次开发。 首先,你需要从官方网站(http://www.csie.ntu.edu.tw/~cjlin/libsvm/)下载LibSVM的源代码包。解压后,找到`java`文件夹,并将其导入到...
### Python 下的 LibSVM 使用详解 #### 一、引言 LibSVM 是由台湾学者林智仁教授团队开发的一款支持向量机(Support Vector Machine, SVM)软件包,它以其高效性和易于使用性而著称。通常情况下,LibSVM 的应用集中在...
### LIBSVM使用介绍 #### 一、LIBSVM软件包简介 LIBSVM是由台湾大学林智仁(Chih-Jen Lin)博士等人开发的一款高效、易用且功能全面的支持向量机(Support Vector Machine, SVM)软件包。这款软件能够解决多种类型的...
### libSVM 使用方法基于 Python #### 一、前言 `libSVM` 是一个简单、易用且高效的 SVM(支持向量机)软件包,广泛应用于机器学习领域中的分类与回归问题。本文旨在详细介绍如何在 Python 环境下使用 `libSVM` ...
matlab使用Libsvm例子,本人技术小白,刚开始也在如何安装和使用libsvm上出现了很多问题,是为了毕设的一个分类问题,希望可以与大家共同进步。资源中包括java、matlab、python与c++。
在libsvm的使用说明中,通常会涵盖以下几个方面: 1. 数据预处理:SVM需要将原始数据转化为适合模型训练的格式,例如,libsvm要求数据以特定的文本格式输入,每一行代表一个样本,每个特征由空格或制表符分隔,最后...
#### 三、LibSVM使用指南 ##### 1. 数据格式 LibSVM支持特定的数据格式,通常每条记录由标签和一组特征组成,特征以索引:值的形式表示。例如: ``` 1 1:0.452 2:0.234 3:0.0 -1 1:0.123 2:0.765 ``` 其中,第一...
本文将详细讲解LibSVM的FarutoGUI版本及其使用方法。 首先,让我们了解什么是支持向量机(SVM)。SVM是一种二分类和多分类的监督学习模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。SVM的核心思想是...
还有我写的libsvm简单使用步骤,很清楚,对新手很有用。 网上很多文章说这几个软件的兼容有版本的要求,我在我的电脑上试过,这几个软件可以兼容,没有出现不能使用的情况。 具体安装方法,压缩包里面有。
在进行机器学习或数据科学的实践过程中,LIBSVM 是一个广泛使用的工具,用于解决分类和回归问题。LIBSVM 由台湾大学的林智仁教授开发,它是支持向量机(SVM)算法的一种实现。MATLAB 是一个高性能的数值计算和可视化...
matlab使用libsvm进行分类代码实例, 这里包括一个数据集合, 一个代码(包括详细注释),而且代码经过修改,已经符合最新的libsvm调用格式,不会出错,用于SVM分类。 首先通过博客,安装好libsvm库,博客地址:...
LibSVM使用交叉验证来寻找最优的C和γ组合。用户可以设置不同的参数网格,然后通过`svm-scale`对数据进行标准化,以确保在不同尺度上的特征具有相同的重要性。 6. **核函数的选择** 选择合适的核函数对于解决特定...
VS2010 使用 libsvm (libsvm 3 18)工具箱的过程 目前互联网搜索数据libsvm工具箱在 VS 中以C++工程呈现的讲解非常稀少而且对初学者有一定的难度 所以在笔者完成工作后写了这篇小记或称为简单教程 呈现给大家 ...