使用libsvm实现归一化
我在使用svm进行分类的过程中接触了非常好用的库libsvm,但是一开始我是在matlab下使用的,libsvm中有matlab下使用的函数,如下:
libsvmwrite.mexw64
libsvmread.mexw64
svmtrain.mexw64
svmpredict.mexw64
问题
但是在使用过程中我遇到一个问题,那就是数据的归一化,在matlab下libsvm中并没有实现数据归一化的函数,在网上查询的过程中,发现大家对于训练集与测试集的数据是否应该放在一起还是分开归一化有非常大的困惑。。。
思考
后来我发现libsvm中有在windows下命令行实现数据归一化、训练及预测的的可执行程序,如下:
svm-scale.exe
svm-train.exe
svm-predict.exe
那么这里的svm-scale.exe究竟是怎么实现归一化的呢?针对这个问题我进行了学习。
学习
首先学习svm-scale.exe的使用方法,如下:
功能
缩放输入数据,原始数据范围可能过大或过小,该过程可将数据重新缩放到适当范围使训练与预测速度更快。
使用方法:
svm-scale.exe [-l lower] [-u upper] [-y y_lower y_upper] [-s save_name] [-r store_name] filename