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中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
python 求10个数的平均数实例
Dec 16 Python
Python Selenium异常处理的实例分析
Feb 28 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
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
深入理解Python异常处理的哲学
2019/02/01 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
消防器材管理制度
2014/01/28 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
外出听课学习心得体会
2016/01/15 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
react中的DOM操作实现
2021/06/30 Javascript
nginx配置限速限流基于内置模块
2022/05/02 Servers