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 while 循环使用的简单实例
Jun 08 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
Aug 23 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
详解Python字典的操作
Mar 04 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
wxPython多个窗口的基本结构
Nov 19 Python
python抓取多种类型的页面方法实例
Nov 20 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
快速配置PHPMyAdmin方法
2008/06/05 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
php使用websocket示例详解
2014/03/12 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
xtree.js 代码
2007/03/13 Javascript
List all the Databases on a SQL Server
2007/06/21 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
总结Python中逻辑运算符的使用
2015/05/13 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
应届生学校辅导员求职信
2013/11/07 职场文书
思想品德课教学反思
2014/02/10 职场文书
毕业生就业意向书
2014/04/01 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL