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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
Python随机读取文件实现实例
May 25 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
替换python字典中的key值方法
Jul 06 Python
python安装requests库的实例代码
Jun 25 Python
简单了解python的break、continue、pass
Jul 08 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
Apr 22 Python
Python中如何添加自定义模块
Jun 09 Python
python怎么调用自己的函数
Jul 01 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
解决中英文字符串长度问题函数
2007/01/16 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP下载大文件失败并限制下载速度的实例代码
2019/05/10 PHP
再论Javascript的类继承
2011/03/05 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
js笔试题-接收get请求参数
2019/06/15 Javascript
Python3 模块、包调用&路径详解
2017/10/25 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
Oracle性能调优原则
2012/05/03 面试题
音乐专业自荐信
2014/02/07 职场文书
小学生安全演讲稿
2014/04/25 职场文书
家长会学生演讲稿
2014/04/26 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2015年教师节感言
2015/08/03 职场文书
解析Redis Cluster原理
2021/06/21 Redis
React Fragment介绍与使用详解
2021/11/11 Javascript