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之类的细节
Oct 13 Python
python统计文本文件内单词数量的方法
May 30 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
python监测当前联网状态并连接的实例
Dec 18 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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和ACCESS写聊天室(二)
2006/10/09 PHP
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
php简单生成随机数的方法
2015/07/30 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
vuex 的简单使用
2018/03/22 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
使用Python写CUDA程序的方法
2017/03/27 Python
python处理按钮消息的实例详解
2017/07/11 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python中bytes和str类型的区别
2019/10/21 Python
Python 远程开关机的方法
2020/11/18 Python
Python使用Pygame绘制时钟
2020/11/29 Python
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
男方父母证婚词
2014/01/12 职场文书
大学活动总结格式
2014/04/29 职场文书
怎样写离婚协议书
2015/01/26 职场文书