因为毕业论文用到了libsvm,在老师的帮助下终于弄明白了。现将其基本的用法总结如下:
(1)准备训练数据
(Cover):
(Stego):
这里,设所有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所在的子目录。如下操作:
%*********************************************************************************
(2)缩放数据
(3)训练数据
Model_train_scale.txt需先建
(4)预测数据
使用预测集,依照已经训练好了的Model,输出预测数据所对应的类型,cover
语法如下:
out_scale.txt需先建
因为我们采用的预测集本身有其所属类别(cover:1;stego:-1),所以预测结果能反映出分类的正确率。正确率在DOS下就能直接显现出。
我们也可以预测训练数据集,同样的,也可看到其正确率。