matlab中的归一化处理有三种方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3 .自己编程
(1)线性函数变换,公式如下:
y=(x-minvalue(/)/(最大值- minvalue ) )。
说明: x、y分别为转换前、转换后的值,MaxValue、MinValue分别为采样的最大值和最小值。
)2)对数函数变换,公式如下:
y=log10(x )
说明:以10为底的对数函数转换。
)3)反正切函数变换如下:
y=atan(x ) *2/PI
(4)归一化码
I=双精度(I;
最大值=max (max (I ) ); %max找到矩阵中各列的最大值,并创建单行数组。 转换后,行将转换为列,max将获得最大值。 如果不移动,则只能求出各列的最大值。
f=1 - I/maxvalue; %为什么用1减少?
Image1=f;
机器学习模型需要将数据规范化
1 )归一化提高了求梯度下降最优解的速度; 2 )标准化有可能提高精度
1归一化为什么会提高求梯度下降法最佳解的速度?
如下图所示,蓝色的bldwn图表示两个特征的等高线。 左图的两个特征X1和X2区间相差很大,X1区间为[ 0,2000 ],X2区间为[ 1,5 ],等高线非常尖。 用坡度下降法求解最优解时,很可能采取“的字型”路线(垂直等高线行走),需要多次迭代才能收敛;
另一方面,右图是两个原始特征的归一化,对应的等高线看起来很圆,在求坡度下降时收敛得很快。
因此,机器学习模型采用梯度下降法求解最优解时,往往需要归一化,否则很难收敛或无法收敛。
追问
谢谢
谢谢