将数据归一化到任意区间范围的方法

   一般常见的数据归一化,是归一化到0~1,或者-1~1的区间,但在一些特殊场合下,我们需要根据实际情况归一化到其他任意区间,方法是:

    将数据归一化到[a,b]区间范围的方法:

(1)首先找到样本数据Y的最小值Min及最大值Max
(2)计算系数为:k=(b-a)/(Max-Min)
(3)得到归一化到[a,b]区间的数据:norY=a+k(Y-Min)

Matlab代码:

clc;clear all;close all;
%%
x=0:0.1:10;
y=(x-5).^2;%产生原始数据样本
figure
plot(x,y,'.-')
axis([0 10 0 26]);
grid on%% 将数据归一化到[a,b]区间的方法
a=0.1;
b=0.5;
Ymax=max(y);%计算最大值
Ymin=min(y);%计算最小值
k=(b-a)/(Ymax-Ymin);
norY=a+k*(y-Ymin);
figure;
plot(x,norY,'.-')
axis([0 10 0 1]);
grid on

实质上,归一化的一般规范函数是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin:

参考资料http://zjh776.iteye.com/blog/1972777 

下面给出简化的归一化到任意区间的方法函数:

function [ y ] = normalization( x,ymin,ymax )
%NORMALIZATION 将数据x归一化到任意区间[ymin,ymax]范围的方法
%   输入参数x:需要被归一化的数据
%   输入参数ymin:归一化的区间[ymin,ymax]下限
%   输入参数ymax:归一化的区间[ymin,ymax]上限
%   输出参数y:归一化到区间[ymin,ymax]的数据
xmax=max(x);%计算最大值
xmin=min(x);%计算最小值
y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
end

Matlab里有一个归一化函数normalize,对矩阵是按列归一化的:

%按列归一化,任意归一化范围
function [Array_dst]=normalize(Array_src,ymin,ymax)
[l,r]=size(Array_src);
Bound=[];
for i=1:rBound(1,i)=min(Array_src(:,i));Bound(2,i)=max(Array_src(:,i));if abs(Bound(1,i)-Bound(2,i))<0.000000001Bound(1,i)=0;Bound(2,i)=1;end
end[m,n]=size(Array_src);
for i=1:mArray_dst(i,:)=ymin + (Array_src(i,:)-Bound(1,:))./(Bound(2,:)-Bound(1,:)).*( ymax - ymin );
end

OpenCV或者C++中可以这么实现:

cv::Mat Normalization(cv::Mat data,float Omin,float Omax) {double minv = 0.0, maxv = 0.0;minMaxIdx(data, &minv, &maxv);float *p= data.ptr<float>(0);int len = data.cols;cv::Mat dest(1, len, CV_32FC1);float *d = dest.ptr<float>(0);for (size_t i = 0; i < len; i++){d[i] = (Omax - Omin)*(p[i] - minv)/ (maxv - minv) + Omin;;}return dest;
}cv::Mat Normalization(cv::Mat data, float Imin, float Imax,float Omin, float Omax) {float *p = data.ptr<float>(0);int len = data.cols;cv::Mat dest(1, len, CV_32FC1);float *d = dest.ptr<float>(0);for (size_t i = 0; i < len; i++){d[i] = (Omax - Omin)*(p[i] - Imin) / (Imax - Imin) + Omin;;}return dest;
}float Normalization(float x, float Imin, float Imax, float Omin, float Omax) {float d = (Omax - Omin)*(x - Imin) / (Imax - Imin) + Omin;;return d;
}

将数据归一化到任意区间范围的方法相关推荐

  1. 数据归一化处理方法_数据预处理:归一化和标准化

    1. 概述 数据的归一化和标准化是特征缩放(feature scaling)的方法,是数据预处理的关键步骤.不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间 ...

  2. Lesson 14.1 数据归一化与Batch Normalization理论基础

    Lesson 14.1 数据归一化与Batch Normalization理论基础   数据归一化是机器学习领域的一种对数据处理的常规方式.在传统机器学习领域,由于各特征的量纲不一致,可能出现建模过程 ...

  3. 一、数据预处理——数据归一化 数据标准化

    一.数据预处理--数据归一化 & 数据标准化 点击标题即可获取文章相关的源代码文件哟! 1.1 数据无量纲化 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据 ...

  4. Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度

    Lesson 4.5 梯度下降优化基础:数据归一化与学习率调度 在上一小节中,我们讨论了关于随机梯度下降和小批量梯度下降的基本算法性质与使用流程.我们知道,在引入了一定的样本随机性之后,能够帮助参数点 ...

  5. 常见数据归一化的几种方法

    常见的数据归一化方法 min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization) 也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1 ...

  6. 数据归一化matlab及python 实现

    更多细节请查看 https://www.zhihu.com/question/20455227 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系. ...

  7. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化

    一.为什么要进行数据归一化 定义:把所有数据的特征都归到 [0,1] 之间 或  均值0方差1 的过程. 原则:样本的所有特征,在特征空间中,对样本的距离产生的影响是同级的: 问题:特征数字化后,由于 ...

  8. python怎么数据归一化_基于数据归一化以及Python实现方式

    数据归一化: 数据的标准化是将数据按比例缩放,使之落入一个小的特定区间,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权. 为什么要做归一化: 1)加快梯度下降 ...

  9. python数据归一化

    在机器学习中,往往需要归一化数据集,下面的公式可以把数据归一化到0~1区间: newvalue = (oldvalue - min)/(max - min) python实现的代码如下: def au ...

最新文章

  1. joomla3.6.5 nginx下 前台页面404错误
  2. 深度学习之Windows下安装faster-rcnn
  3. 编译apache过程中出现如下错误及解决办法
  4. 机器学习知识总结系列- 知识图谱(0-0)
  5. java中什么是数组_JAVA中关于数组的定义
  6. Oracle分析函数、多维函数和Model函数简要说明,主要针对BI报表统计
  7. Java中Link,set 和Map的区别,ArrayList,HashSet和HashMap的区别。
  8. STL - MainTao - 博客园
  9. [ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
  10. Arcgis10.2安装及LicensenManager10.2启动失败解决方法
  11. Head First C 学习日志 第十章 进程间通信 输入输出重定向
  12. MyBatis学习(三)MyBatis的动态SQL
  13. oracle random函数用法,Oracle随机函数的用法
  14. u盘虚拟启动cd linux,[CDLinux]制作U盘CDLinux系统启动盘
  15. sd和sem啥区别_标准差SD和标准误sem的区别
  16. 文件不小心删除了怎么恢复?实用的两个小妙招
  17. div用css显示隐藏的效果
  18. iOS应用开发入门(1)——第一个iOS应用
  19. 前端工作第一天,准备事项,配置环境
  20. android 喇叭帧动画,CSS动画效果——语音播放小喇叭

热门文章

  1. C语言拼接字符串 -- 使用strcat()函数
  2. 【海洋女神原创】谈谈静默安装
  3. Codeforces Round #246 (Div. 2)
  4. Neo4j--第一章
  5. 拖动效果,防止选中文字兼容代码
  6. pgadmin4 python
  7. spring boot mybatis没有扫描jar中的Mapper接口
  8. 7、Python文件操作工具 openpyxl 工具 2
  9. 由歌词引发的模式思考之下篇(模拟Spring的BeanFactory)
  10. C++入门课程系列:基础知识篇(1)