1、什么是特征归一化?
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权
其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。
2、为什么要进行特征归一化?
(1)对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。
(2)从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性哪些模型需要做归一化?
1)需要使用梯度下降的模型要做归一化——因为不做归一化会使收敛的路径程z字型下降,导致收敛路径太慢,而且不容易找到最优解
那就显而易见了,比如说线性回归、逻辑回归、gbdt等
归一化的几种方法
min-max标准化
概念:对原始数据进行线性变换,使得结果在[0,1]中间。 (max最大值,min最小值)
3、特征归一化的好处
1)归一化后加快了梯度下降求最优解的速度;
2)归一化有可能提高精度(如KNN)
void QuickDemo::norm_demo(Mat &image) {
Mat dst;
cout << "数据类型:" << image.type() << endl;
image.convertTo(image, CV_32F);//数据类型转换,将8位字符型转换为32浮点型
cout << "数据类型:" << image.type() << endl;
normalize(image, dst, 1.0, 0, NORM_MINMAX);//将图片进行归一化处理
cout << "数据类型:" << dst.type() << endl;
imshow("图像归一化",dst);
}