一、基本用法
[y,ps] = mapminmax(x,ymin,ymax) % 这里如果不指定 ymin,ymax,则ymin默认为-1,ymax默认为1。
mapminmax(data) 默认归一化范围为[-1,1],且对每一行做归一化。一定记住是对行进行归一化!!!
二、归一化的讨论
参考:http://www.ilovematlab.cn/thread-63766-1-1.html
问题一:
在智能算法程序实现中中,原始数据应当对每一个属性(维度进行归一化)即应当使数据集data中行代表属性,列代表样本数据个数。而数据读取函数textread、xlsread均根据数据集进行按列读取,因此,我们必须在归一化时注意是否需要转置。
问题二:
常用形式:
[inputtrain,setting] = mapminmax(input_train');
inputtest = mapminmax('apply',input_test',setting);
这两句命令代表将Input_text按input_train的归一化规则进行归一化,但是前提必须是input_test中的数据必须在inout_train数据的最小值和最大值之间
两种观点:
一种是将数据集与测试集放在一起进行归一化;另一种是不用在意测试集的最值,因为实际中测试数据本身就是不确定的,正好可以检测模型的诊断/预测能力。个人倾向于后者。具体情况还要具体对待
note:
BP神经网络中,newff函数使用的数据m行n列,行代表数据属性值,列代表数据样本的个数。
libSVM中,各函数使用的矩阵m行n列比如880X6,行代表数据样本的个数,列代表数据的属性值。两者正好相反。