python实现几种归一化方法(Normalization Method)


Posted in Python onJuly 31, 2019

数据归一化问题是数据挖掘中特征向量表达时的重要问题,当不同的特征成列在一起的时候,由于特征本身表达方式的原因而导致在绝对数值上的小数据被大数据“吃掉”的情况,这个时候我们需要做的就是对抽取出来的features vector进行归一化处理,以保证每个特征被分类器平等对待。下面我描述几种常见的Normalization Method,并提供相应的python实现(其实很简单):

1、(0,1)标准化:

这是最简单也是最容易想到的方法,通过遍历feature vector里的每一个数据,将Max和Min的记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理:

python实现几种归一化方法(Normalization Method)

LaTex:{x}_{normalization}=\frac{x-Min}{Max-Min}

Python实现:

def MaxMinNormalization(x,Max,Min):
	x = (x - Min) / (Max - Min);
	return x;

找大小的方法直接用np.max()和np.min()就行了,尽量不要用python内建的max()和min(),除非你喜欢用List管理数字。

2、Z-score标准化:

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,这里的关键在于复合标准正态分布,个人认为在一定程度上改变了特征的分布,关于使用经验上欢迎讨论,我对这种标准化不是非常地熟悉,转化函数为:

python实现几种归一化方法(Normalization Method)

LaTex:{x}_{normalization}=\frac{x-\mu }{\sigma }

Python实现:

def Z_ScoreNormalization(x,mu,sigma):
	x = (x - mu) / sigma;
	return x;

这里一样,mu(即均值)用np.average(),sigma(即标准差)用np.std()即可。

3、Sigmoid函数

Sigmoid函数是一个具有S形曲线的函数,是良好的阈值函数,在(0, 0.5)处中心对称,在(0, 0.5)附近有比较大的斜率,而当数据趋向于正无穷和负无穷的时候,映射出来的值就会无限趋向于1和0,是个人非常喜欢的“归一化方法”,之所以打引号是因为我觉得Sigmoid函数在阈值分割上也有很不错的表现,根据公式的改变,就可以改变分割阈值,这里作为归一化方法,我们只考虑(0, 0.5)作为分割阈值的点的情况:

python实现几种归一化方法(Normalization Method)

python实现几种归一化方法(Normalization Method)

LaTex:{x}_{normalization}=\frac{1}{1+{e}^{-x}}

Python实现:

def sigmoid(X,useStatus):
	if useStatus:
		return 1.0 / (1 + np.exp(-float(X)));
	else:
		return float(X);

这里useStatus管理是否使用sigmoid的状态,方便调试使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
python发送邮件脚本
May 22 Python
python3将视频流保存为本地视频文件
Jun 20 Python
对python多线程与global变量详解
Nov 09 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
Python命名空间及作用域原理实例解析
Aug 12 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 #Python
python实现windows倒计时锁屏功能
Jul 30 #Python
python创建属于自己的单词词库 便于背单词
Jul 30 #Python
python中append实例用法总结
Jul 30 #Python
简单了解django orm中介模型
Jul 30 #Python
Python爬虫学习之翻译小程序
Jul 30 #Python
安装docker-compose的两种最简方法
Jul 30 #Python
You might like
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue二级路由设置方法
2018/02/09 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python文件操作类操作实例详解
2014/07/11 Python
Python中optparse模块使用浅析
2015/01/01 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python环境下安装opencv库的方法
2020/03/05 Python
部队领导证婚词
2014/01/12 职场文书
商务助理求职信范文
2014/04/20 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
合作合同协议书范本
2015/01/27 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android