libsvm 学习笔记(三)--- svm-scale 使用方法介绍


svm-scale 对数据进行缩放的规则:

式中,y 为缩放前的数据,y' 为缩放后的数据;lower 为参数中指定的数据下界,upper 为参数中指定的数据上界;min 为全部训练数据中的最小值,max 为全部训练数据中的最大值。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

windows 文件夹下有一个 svm-scale.exe 程序,可以用 svm-scale 命令来执行该程序。

先来看看 svm-scale 都有哪些参数,在 libsvm 的 windows 目录下输入命令svm-scale :




命令 svm-scale 要求至少输入一个文件名 data_filename,该文件中是要缩放的数据,看示例:

缩放 windows 文件夹下的 train1 文件中的数据:




执行这条命令,程序 svm-scale.exe 会将缩放的结果输出在控制台中:



我们使用命令 "> train1.scaled" 将结果输出在文件 train1.scaled中:



其他的可选参数:
lower --- upper:缩放后的数据范围(特征向量 x),默认 -1 到 1。

y_lower --- y_upper:缩放后的数据范围(类别标签 y),默认不对 y 进行缩放。
-s save_filename
将缩放的规则保存为文件save_filename。

-r restore_filename:按照restore_filename中的规则缩放数据。


我们使用命令 "-s train.range" 将缩放规则保存在文件train.range 中:




看看文件 train.range 中的内容:


第一行表示是对 x 进行的缩放;

第二行表示缩放的上下界分别是 1 和 -1;

第三行表示特征向量 x 的第一个分量 x1 在训练数据中的范围是 0~297.05,以此类推。


再看看文件 train1 和 train1.scaled 中的内容:



第一条数据中的 x 的第一个分量的缩放:


还可以自定义 lower 和 upper 的值后再对数据进行缩放:




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

再看看如何使用 train.range 文件对测试文件 test1 进行相同标准的缩放:



查看 train.range、test1、test1.scaled 文件的内容,检测缩放是否正确:





svm-scale.exe 程序的源码是 libsvm 根目录下的 svm-scale.c 文件,可以通过研究该文件中的源码来进一步深入学习 libsvm 缩放数据的机制。


文章内容中如有不足和错误,恳请各位大神不吝赐教!

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页