python数据预处理之数据标准化的几种处理方式


Posted in Python onJuly 17, 2019

何为标准化:

在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。

几种标准化方法:

归一化Max-Min

min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为:

新数据=(原数据-最小值)/(最大值-最小值)

这种方法能使数据归一化到一个区域内,同时不改变原来的数据结构。

实现中心化Z-Score

这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。

z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。

新数据=(原数据-均值)/标准差

这种方法适合大多数类型数据,也是很多工具的默认标准化方法。标准化之后的数据是以0为均值,方差为以的正太分布。但是Z-Score方法是一种中心化方法,会改变原有数据的分布结构,不适合用于对稀疏数据做处理。

很多时候数据集会存在稀疏特征,表现为标准差小,很多元素值为0,最常见的稀疏数据集是用来做协同过滤的数据集,绝大部分数据都是0。对稀疏数据做标准化,不能采用中心化的方式,否则会破坏稀疏数据的结构。

用于稀疏数据的MaxAbs

最大值绝对值标准化(MaxAbs)即根据最大值的绝对值进行标准化,假设原转换的数据为x,新数据为x',那么x'=x/|max|,其中max为x锁在列的最大值。

该方法的数据区间为[-1, 1],也不破坏原数据结构的特点,因此也可以用于稀疏数据,一些稀疏矩阵。

针对离群点的RobustScaler

有些时候,数据集中存在离群点,用Z-Score进行标准化,但是结果不理想,因为离群点在标准化后丧失了利群特性。RobustScaler针对离群点做标准化处理,该方法对数据中心化的数据的缩放健壮性有更强的参数控制能力。

python实现

import numpy as np
import pandas as pd
from sklearn import preprocessing
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
%matplotlib inline

# 导入数据
data = make_moons(n_samples=200, noise=10)[0]

#Z-Score标准化
#建立StandardScaler对象
zscore = preprocessing.StandardScaler()
# 标准化处理
data_zs = zscore.fit_transform(data)

#Max-Min标准化
#建立MinMaxScaler对象
minmax = preprocessing.MinMaxScaler()
# 标准化处理
data_minmax = minmax.fit_transform(data)

#MaxAbs标准化
#建立MinMaxScaler对象
maxabs = preprocessing.MaxAbsScaler()
# 标准化处理
data_maxabs = maxabs.fit_transform(data)

#RobustScaler标准化
#建立RobustScaler对象
robust = preprocessing.RobustScaler()
# 标准化处理
data_rob = robust.fit_transform(data)

# 可视化数据展示
# 建立数据集列表
data_list = [data, data_zs, data_minmax, data_maxabs, data_rob]
# 创建颜色列表
color_list = ['blue', 'red', 'green', 'black', 'pink']
# 创建标题样式
title_list = ['source data', 'zscore', 'minmax', 'maxabs', 'robust']

# 设置画幅
plt.figure(figsize=(9, 6))
# 循环数据集和索引
for i, dt in enumerate(data_list):
  # 子网格
  plt.subplot(2, 3, i+1)
  # 数据画散点图
  plt.scatter(dt[:, 0], dt[:, 1], c=color_list[i])
  # 设置标题
  plt.title(title_list[i])
# 图片储存 
plt.savefig('xx.png')
# 图片展示
plt.show()

python数据预处理之数据标准化的几种处理方式

参考:
《python数据分析与数据化运营》 宋天龙

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

Python 相关文章推荐
Python面向对象编程中的类和对象学习教程
Mar 30 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
老生常谈Python进阶之装饰器
May 11 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
python读写csv文件实例代码
Jul 05 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
tensorflow多维张量计算实例
Feb 11 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
解决Python正则表达式匹配反斜杠''\''问题
Jul 17 #Python
python小程序实现刷票功能详解
Jul 17 #Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 #Python
Python math库 ln(x)运算的实现及原理
Jul 17 #Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 #Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 #Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 #Python
You might like
Thinkphp微信公众号支付接口
2016/08/04 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python自定义简单图轴简单实例
2018/01/08 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
Python基础详解之描述符
2021/04/28 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript