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的socket编程入门教程
Apr 23 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
浅谈function(函数)中的动态参数
Apr 30 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
Python OpenCV实现视频分帧
Jun 01 Python
DataFrame.to_excel多次写入不同Sheet的实例
Dec 02 Python
通过cmd进入python的步骤
Jun 16 Python
浅析Python __name__ 是什么
Jul 07 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 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
php访问查询mysql数据的三种方法
2006/10/09 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php 类自动载入的方法
2015/06/03 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python实现网站注册验证码生成类
2017/06/08 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
深入理解Python3 内置函数大全
2017/11/23 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
新员工入职感言
2014/02/01 职场文书
城南旧事电影观后感
2015/06/16 职场文书
银行柜员工作心得体会
2016/01/23 职场文书