数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码
目录
归一化
数据归一化的背景介绍
MinMaxScaler:归一到 [ 0,1 ]
MaxAbsScaler:归一到 [ -1,1 ]
标准化
去均值,方差规模化
归一化
数据归一化的背景介绍
在之前做聚类分析的时候我们发现,聚类的效果往往特别受其中一列数据的影响,使得原本应该散布在二维平面图上的点,变成聚集在一条线上的点,可想而知,其聚类效果肯定不理想。
左图:为所有数据都归一化之后的聚类分析散点图;
右图:为其中一列是合同金额,并且没有归一化数据的散点图;
归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达式变为无量纲表达式,成为纯量。后者常见于微波之中,也就是电路分析、信号系统、电磁波传输等,研究物理的人会比较熟悉。而像我们这些普通的数据分析师的日常工作中,不太会遇见需要归一化为无量纲表达式的情况,因此只讨论归一化到 [0,1] 的情况。
归一化一般是把数据映射到 [ 0,1 ] ,但也有归一到 [ -1,1 ] 的情况,两种情况在Python中分别可以通过MinMaxScaler 或者 MaxAbsScaler方法来实现。
MinMaxScaler:归一到 [ 0,1 ]
原理
从原理中我们注意到有一个axis=0,这表示MinMaxScaler方法默认是对每一列做这样的归一化操作,这也比较符合实际应用。
eg:将数据归一到 [ 0,1 ]
from sklearn import preprocessing
import numpy as npx = np.array([[3., -1., 2., 613.],[2., 0., 0., 232],[0., 1., -1., 113],[1., 2., -3., 489]])min_max_scaler = preprocessing.MinMaxScaler()
x_minmax = min_max_scaler.fit_transform(x)
print(x_minmax)
运行结果:
[[1. 0. 1. 1. ][0.66666667 0.33333333 0.6 0.238 ][0. 0.66666667 0.4 0. ][0.33333333 1. 0. 0.752 ]]
如果有新的测试数据进来,也想做同样的转换,那么将新的测试数据添加到原数据末尾即可
from sklearn import preprocessing
import pandas as pdmin_max_scaler = preprocessing.MinMaxScaler()x = ([[3., -1., 2., 613.],[2., 0., 0., 232],[0., 1., -1., 113],[1., 2., -3., 489]])#原数据y = [7., 1., -4., 987]#新的测试数据
x.append(y)#将y添加到x的末尾
print('x :\n', x)
x_minmax = min_max_scaler.fit_transform(x)
print('x_minmax :\n', x_minmax)
运行结果:
x :[[3.0, -1.0, 2.0, 613.0], [2.0, 0.0, 0.0, 232], [0.0, 1.0, -1.0, 113], [1.0, 2.0, -3.0, 489], [7.0, 1.0, -4.0, 987]] x_minmax :[[0.42857143 0. 1. 0.57208238][0.28571429 0.33333333 0.66666667 0.13615561][0. 0.66666667 0.5 0. ][0.14285714 1. 0.16666667 0.43020595][1. 0.66666667 0. 1. ]]
每一列特征中的最小值变成了0,最大值变成了1.
MaxAbsScaler:归一到 [ -1,1 ]
原理与MinMaxScaler相似,
from sklearn import preprocessing
import numpy as npx = np.array([[3., -1., 2., 613.],[2., 0., 0., 232],[0., 1., -1., 113],[1., 2., -3., 489]])
max_abs_scaler = preprocessing.MaxAbsScaler()
x_train_maxsbs = max_abs_scaler.fit_transform(x)
x_train_maxsbs
运行结果:
array([[ 1. , -0.5 , 0.66666667, 1. ],[ 0.66666667, 0. , 0. , 0.37846656],[ 0. , 0.5 , -0.33333333, 0.18433931],[ 0.33333333, 1. , -1. , 0.79771615]])
如果有新的测试数据进来,和原来的表一起进行归一化:
from sklearn import preprocessing
import pandas as pdmax_abs_scaler = preprocessing.MaxAbsScaler()x = ([[3., -1., 2., 613.],[2., 0., 0., 232],[0., 1., -1., 113],[1., 2., -3., 489]])#原数据y = [5., 1., -4., 888]#新的测试数据
x.append(y)
print('x :\n', x)
x_train_maxsbs = max_abs_scaler.fit_transform(x)
print('x_train_maxsbs :\n', x_train_maxsbs)
运行结果:
x :[[3.0, -1.0, 2.0, 613.0], [2.0, 0.0, 0.0, 232], [0.0, 1.0, -1.0, 113], [1.0, 2.0, -3.0, 489], [5.0, 1.0, -4.0, 888]] x_train_maxsbs :[[ 0.6 -0.5 0.5 0.69031532][ 0.4 0. 0. 0.26126126][ 0. 0.5 -0.25 0.12725225][ 0.2 1. -0.75 0.55067568][ 1. 0.5 -1. 1. ]]
其他数据预处理方法
数据标准化 - scale() - Python代码
拉格朗日插值法补充缺失值
连续数据离散化(等宽、等频、聚类离散)
清洗你见过的各种类型的重复
数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码相关推荐
- 数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码
https://blog.csdn.net/weixin_40683253/article/details/81508321
- 数据归一化matlab及python 实现
更多细节请查看 https://www.zhihu.com/question/20455227 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系. ...
- pandas显示全部数据内容_1行Python代码就能挖掘数据!这个库太神奇啦!
Peter Nistrup | 作者夏夜 | 译者lnfoQ | 来源 Pandas 是 Python 中处理数据的首选库,它使用起来很容易,非常灵活,能够处理不同类型和大小的数据,而且它有大量的函数 ...
- python代码实现中心化_数据预处理——标准化(附python代码)
数据标准化,是数据清洗的重要环节之一.主要目的是消除"量纲"和"不同规模"的影响,使其所放到相同的数据区间和范围,以减少规模.特征.分布差异等对数据模型的影响. ...
- python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据
原创: 野马 菜鸟学Python 学Python可以干很多事情,比如爬虫,数据分析,机器学习,但是有一个非常小众的分支,不仅结合了两大高薪行业,而且还薪水非常诱人,就是量化金融岗位.目前Python已 ...
- 算法笔记(18)数据升维及Python代码实现
数据集特征不足的情况下,需要对数据集的特征进行扩充,两种方法:交互式特征和多项式特征. 向特征集添加交互式特征 交互式特征是在原始数据特征中添加交互项,使特征数量增加. Python代码实现: X_m ...
- python 数据归一化/标准化方法与代码(离差标准化,log归一化,标准化,比例归一化,反正切归一化)
下面是一些常用的归一化.标准化的方法: 离差标准化 log归一化 标准化 比例归一化 反正切归一化 代码示例 import numpy as npdef min_max_normalization(v ...
- 商业数据分析模型及其核心Python代码_持续更新
商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...
- python代码规范化_数据标准化方法及其Python代码实现
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...
最新文章
- python 日志模块 logging
- idea getset的快捷键
- 使用Python和OpenCV检测图片上的条形码
- Andriod anim scale中的属性介绍以及Animation类的属性
- boost::geometry::util::calculation_type用法的测试程序
- 如何搭建企业局域网共享
- 每个私有静态方法都是新类的候选人
- 如何将php改成mp4,PHP 将视频转成 MP4 并获取视频预览图(用到ffmpeg)
- android 高度百分比,如何在Android中进行百分比高度和宽度?
- MDI多窗体1130
- 【转载】正则表达式30分钟入门教程
- 关于DOM的事件操作
- 微信蓝牙协议二:1800 or 18914E结尾和Varint压缩算法
- struts2 从一个action 跳转到另一个action的两种方法
- linux的源码安装步骤(以安装nginx为例)
- char可以存储汉字吗?为什么
- html弹出层很字体模糊了,由CSS3 transform 字体模糊问题揭示出浏览器渲染机制
- 串行通信(SCI模块)
- java aes 中文_java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)...
- 火狐浏览器安装FoxyProxy代理插件