python数据归一化及三种方法详解


Posted in Python onAugust 06, 2019

数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是三种常用的归一化方法:

min-max标准化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 , 1]之间。转换函数如下: 

python数据归一化及三种方法详解 

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

min-max标准化python代码如下:

import numpy as np
 
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
  x = float(x - np.min(arr))/(np.max(arr)- np.min(arr))
  print x
 
# output
# 0.0
# 0.1
# 0.5
# 0.8
# 1.0

使用这种方法的目的包括:

1、对于方差非常小的属性可以增强其稳定性;

2、维持稀疏矩阵中为0的条目。

下面将数据缩至0-1之间,采用MinMaxScaler函数

from sklearn import preprocessing  
 
import numpy as np 
 
X = np.array([[ 1., -1., 2.], 
 
       [ 2., 0., 0.], 
 
       [ 0., 1., -1.]]) 
 
min_max_scaler = preprocessing.MinMaxScaler() 
 
X_minMax = min_max_scaler.fit_transform(X)

最后输出:

array([[ 0.5 , 0. , 1. ],
          [ 1. , 0.5 , 0.33333333], 
          [ 0. , 1. , 0. ]])

测试用例:

注意:这些变换都是对列进行处理。

当然,在构造类对象的时候也可以直接指定最大最小值的范围:feature_range=(min, max),此时应用的公式变为:

X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0)) 
X_minmax=X_std/(X.max(axis=0)-X.min(axis=0))+X.min(axis=0))

Z-score标准化方法

也称为均值归一化(mean normaliztion), 给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。转化函数为: 

python数据归一化及三种方法详解 

其中 μμ 为所有样本数据的均值,σσ为所有样本数据的标准差。

import numpy as np
 
arr = np.asarray([0, 10, 50, 80, 100])
for x in arr:
  x = float(x - arr.mean())/arr.std()
  print x
 
# output
# -1.24101045599
# -0.982466610991
# 0.0517087689995
# 0.827340303992
# 1.34442799399

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

Python 相关文章推荐
python网页请求urllib2模块简单封装代码
Feb 07 Python
pycharm 使用心得(六)进行简单的数据库管理
Jun 06 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
May 27 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
python循环输出三角形图案的例子
Nov 22 Python
解决Python3下map函数的显示问题
Dec 04 Python
Python面向对象封装操作案例详解
Dec 31 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
python自动化八大定位元素讲解
Jul 09 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 #Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 #Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 #Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 #Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 #Python
django foreignkey外键使用的例子 相当于left join
Aug 06 #Python
Python Django简单实现session登录注销过程详解
Aug 06 #Python
You might like
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
用javascript实现画板的代码
2007/09/05 Javascript
javascript 动态参数判空操作
2008/12/22 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Vue自定义指令详解
2017/07/28 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
中医专业应届生求职信
2013/11/17 职场文书
2013年保送生自荐信格式
2013/11/20 职场文书
西湖英语导游词
2015/02/06 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript