libsvm的使用

因为毕业论文用到了libsvm,在老师的帮助下终于弄明白了。现将其基本的用法总结如下:

(1)准备训练数据

   首先,按照libsvm的要求把数据转换成指定的格式。以我的论文内容为例,进行两类问题的分析,分为cover和stego两种。我们共有1500幅cover,1500幅stego。然后各取200幅组成训练数据集,另外的各1300幅图像分别作为cover和stego的预测集。根据理论分析,分别求其2个特征属性。并转换成指定的数据格式: 

(Cover):  +1 1:<value1> 2:<value2> 

(Stego):  -1 1:<value1> 2:<value2> 

这里,设所有Cover的label为1,相反的,Stego为-1.

转换数据格式的过程我是在matlab下实现的。首先,设定一个函数“function mat2libsvm(X, Y, fname)”。然后,利用该函数将提取出的数据转换成指定格式“mat2libsvm( FeaturesCover(ListLenStegoTr+1:end,:),PreCover(ListLenStegoTr+1:end), ‘train.txt')” 。转换完的数据就以train.txt文本文档的形式存在当前目录下了。

%*********************************************************************************

插播,讲下。我们把libsvn文件夹放在指定的一个位置,比如我放在D盘。另外,libsvm都是在DOS下执行的。在windows下,点开始——运行——CMD——确定就进入DOS系统命令行了。DOS默认的目录是在C盘。所以我们现将当前工作目录改为D盘。进而再进入我们的svm-scale.exe,svm-train.exe,svm-predict.exe所在的子目录。如下操作:

[转载]菜鸟级libsvm的使用~~

%*********************************************************************************

 

(2)缩放数据

 因为得到的数据的范围较大,为了得到较好的分类结果,利用LIBSVM自带的scale对所得的一个训练数据集和两个预测集分别进行缩放,把所有数据归一化,缩放到[转载]菜鸟级libsvm的使用~~的范围内。

 其语法如下:

      svm-scale -s save.txt train.txt>train_scale.txt(在dos下执行)

 其中,train.txt从上面matlab目录下移到D:libsvm-2.86windows目录下,save.txt 和train_scale.txt要在执行前建立在该目录下。归一化过程中用的数据存放在save文件中

(3)训练数据

 对以上已经装换为指定格式且归一化的数据进行训练(svmtrain),产生一个Model文件。

     语法如下:

      svm-train -t -g train_scale.txt Model_train_scale.txt(DOS)

Model_train_scale.txt需先建

(4)预测数据

使用预测集,依照已经训练好了的Model,输出预测数据所对应的类型,cover or stego.

语法如下:

   svm-predict Cover_scale.txt Model_train_scale.txt out_scale.txt(DOS)

out_scale.txt需先建

因为我们采用的预测集本身有其所属类别(cover:1;stego:-1),所以预测结果能反映出分类的正确率。正确率在DOS下就能直接显现出。

我们也可以预测训练数据集,同样的,也可看到其正确率。

[转载]菜鸟级libsvm的使用~~

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值