LIBSVM数据格式及其使用
2015-08-11 17:14
453 查看
关于支持向量机(SVM)的理论部分推荐一个博客:支持向量机通俗导论(理解SVM的三层境界)
/article/1350687.html
July的博客分三层讲述支持向量机,对于我们需要了解道不同层次的学习者来说,一目了然。
我也是通过此博客进行学习的。
假若你已经基本上掌握了SVM的理论部分,那么如何对数据进行分析呢?
我们一般对数据使用SVM进行分类的时候,使用的是林智仁的SVM库:LIBSVM
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
在这里可以下载到最新的库,而且能够下载到训练所用的数据,但是数据连接点开之后只能复制,就像这个数据集:
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/breast-cancer
不能下载,那我们复制完之后存储成什么格式呢?
我们可以从LIBSVM里面随便下载一个数据,比如libsvm里面自带的heart_scale,然后用notepad打开,粘贴保存即可
对于自己的数据怎么办呢?
首先,我们知道LIBSVM里面的数据格式如下:
Label 1:value 2:value ….
其次,我们使用FormatDataLibsvm.xls生成这种格式,具体如下:
下载FormatDataLibsvm.xls(百度搜索)
运行FormatDataLibsvm.xls(注意这时会有一个关于“宏已禁宏”的安全警示,点击“选项”,选择“启用此内容”,确定即可);1,先运行FormatDataLibsvm.xls然后将数据粘贴到sheet1的topleft单元。
2、 打开data.xls,(注:网上很多的介绍都是直接将数据粘贴到sheet1的topleft单元),要特别注意的是这时候的数据排列顺序应该是:
等数据转换完成后,将该文件保存为.txt文件。这时数据转换的问题就解决了。
最后,从LIBSVM里面随便下载一个数据,比如libsvm里面自带的heart_scale,然后用notepad打开,数据粘贴进保存即可
使用libsvm 3.18 MATLAB 编程对UCI的数据breast进行分类:
数据连接:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/breast-cancer
程序如下:
运行结果:
optimization finished, #iter = 67190
nu = 0.093757
obj = -18.486007, rho = -0.113756
nSV = 22, nBSV = 16
Total nSV = 22
Accuracy = 95.1782% (454/477)(classification)
总之,数据前期处理很重要,归一化很重要,明白参数,逐一试试,才能达到较好的分类效果。
/article/1350687.html
July的博客分三层讲述支持向量机,对于我们需要了解道不同层次的学习者来说,一目了然。
我也是通过此博客进行学习的。
假若你已经基本上掌握了SVM的理论部分,那么如何对数据进行分析呢?
我们一般对数据使用SVM进行分类的时候,使用的是林智仁的SVM库:LIBSVM
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
在这里可以下载到最新的库,而且能够下载到训练所用的数据,但是数据连接点开之后只能复制,就像这个数据集:
http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/breast-cancer
不能下载,那我们复制完之后存储成什么格式呢?
我们可以从LIBSVM里面随便下载一个数据,比如libsvm里面自带的heart_scale,然后用notepad打开,粘贴保存即可
对于自己的数据怎么办呢?
首先,我们知道LIBSVM里面的数据格式如下:
Label 1:value 2:value ….
其次,我们使用FormatDataLibsvm.xls生成这种格式,具体如下:
下载FormatDataLibsvm.xls(百度搜索)
运行FormatDataLibsvm.xls(注意这时会有一个关于“宏已禁宏”的安全警示,点击“选项”,选择“启用此内容”,确定即可);1,先运行FormatDataLibsvm.xls然后将数据粘贴到sheet1的topleft单元。
2、 打开data.xls,(注:网上很多的介绍都是直接将数据粘贴到sheet1的topleft单元),要特别注意的是这时候的数据排列顺序应该是:
条件属性a 条件属性b ... 决策属性 7 5 ... 2 4 2 ... 1 3、"工具"-->"宏"-->执行下面有一个选项(FormatDatatoLibsvm)-->执行,要选中这个然后点击“运行” ,这时候数据讲变成: 决策属性 条件属性a 条件属性b ... 2 1:7 2:5 ... 1 1:4 2:2 ...
等数据转换完成后,将该文件保存为.txt文件。这时数据转换的问题就解决了。
最后,从LIBSVM里面随便下载一个数据,比如libsvm里面自带的heart_scale,然后用notepad打开,数据粘贴进保存即可
使用libsvm 3.18 MATLAB 编程对UCI的数据breast进行分类:
数据连接:http://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/binary/breast-cancer
程序如下:
%数据本身分组加预测 [breast_label, breast_inst] =libsvmread('../breast_scale'); data= [breast_inst(:,1), breast_inst(:,2),breast_inst(:,3), breast_inst(:,4)]; %data = breast_inst; groups = ismember(breast_label,2); %将标签转换成1和0 [train, test] =crossvalind('holdOut',groups,0.7); %利用交叉耦合函数进行分组,70%的数据用来训练,剩下的数据进行预测 train_breast = data(train,:); %获取train标签对应的训练数据 train_breast_labels = groups(train,:); train_breast_labels = double(train_breast_labels ); test_breast = data(test,:); %获取train标签对应的训练数据 test_breast_labels = groups(test,:); test_breast_labels =double(test_breast_labels); % 数据归一化 train_breast = normalization(train_breast',2); test_breast = normalization(test_breast',2); train_breast = train_breast'; test_breast = test_breast'; %训练和预测 model = svmtrain(train_breast_labels,train_breast, '-s 0 -t 0 -c 1 -g 0.07'); [predict_label, accuracy, dec_values] =svmpredict(test_breast_labels, test_breast, model); [mm,mn] = size(model.SVs); figure; hold on; [m,n] = size(train_breast); for run = 1:m if train_breast_labels(run) == 0 h1 = plot( train_breast(run,1),train_breast(run,2),'r+' ); else h2 = plot( train_breast(run,1),train_breast(run,2),'g*' ); end for i = 1:mm if model.SVs(i,1)==train_breast(run,1) &&model.SVs(i,2)==train_breast(run,2) h3 = plot( train_breast(run,1),train_breast(run,2),'o' ); end end end legend([h1,h2,h3],'1','0','SupportVectors'); hold off;
运行结果:
optimization finished, #iter = 67190
nu = 0.093757
obj = -18.486007, rho = -0.113756
nSV = 22, nBSV = 16
Total nSV = 22
Accuracy = 95.1782% (454/477)(classification)
总之,数据前期处理很重要,归一化很重要,明白参数,逐一试试,才能达到较好的分类效果。
相关文章推荐
- Container with most water
- 学习zepto.js(原型方法)[2]
- MySQL数据库性能优化专题
- 行内元素和块级元素
- NOIP2009 提高组 最优贸易 解题报告
- 正则表达式介绍
- AsyncTask执行顺序
- ClickOnce部署
- Android 网络学习之使用多线程下载,支持断点续传
- C++primer【笔记】 顺序容器
- 26-网络编程-03-网络编程(网络要素-端口)
- 26-网络编程-04-网络编程(网络要素-传输协议)
- 函数在线模拟
- Linux系统下UDP发送和接收广播消息小例子
- hdu 3709 数字dp(小思)
- c# 搜狗拼音输入法,刷输入速度和累计输入
- 读取文件夹下的文件,并且修改文件名
- log4j日志、反射、枚举、克隆
- K-SVD简述——字典学习,稀疏编码
- cell自适应高度