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中线程问题的简单讲解
Apr 03 Python
python开发之IDEL(Python GUI)的使用方法图文详解
Nov 12 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
Django model反向关联名称的方法
Dec 15 Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
Python生成一个迭代器的实操方法
Jun 18 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
详细分析Python垃圾回收机制
Jul 01 Python
简述python&pytorch 随机种子的实现
Oct 07 Python
opencv实现图像几何变换
Mar 24 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
header()函数使用说明
2006/11/23 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
php计算整个目录大小的方法
2015/06/01 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
用JS控制回车事件的代码
2011/02/20 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
Python Socket传输文件示例
2017/01/16 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python实现图片压缩代码实例
2019/08/12 Python
python实现字典嵌套列表取值
2019/12/16 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
导游词之晋城蟒河
2019/12/12 职场文书
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers