目录

归一化

数据归一化的背景介绍

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代码相关推荐

  1. 数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码

    https://blog.csdn.net/weixin_40683253/article/details/81508321

  2. 数据归一化matlab及python 实现

    更多细节请查看 https://www.zhihu.com/question/20455227 归一化的目的简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系. ...

  3. pandas显示全部数据内容_1行Python代码就能挖掘数据!这个库太神奇啦!

    Peter Nistrup | 作者夏夜 | 译者lnfoQ | 来源 Pandas 是 Python 中处理数据的首选库,它使用起来很容易,非常灵活,能够处理不同类型和大小的数据,而且它有大量的函数 ...

  4. python代码实现中心化_数据预处理——标准化(附python代码)

    数据标准化,是数据清洗的重要环节之一.主要目的是消除"量纲"和"不同规模"的影响,使其所放到相同的数据区间和范围,以减少规模.特征.分布差异等对数据模型的影响. ...

  5. python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据

    原创: 野马 菜鸟学Python 学Python可以干很多事情,比如爬虫,数据分析,机器学习,但是有一个非常小众的分支,不仅结合了两大高薪行业,而且还薪水非常诱人,就是量化金融岗位.目前Python已 ...

  6. 算法笔记(18)数据升维及Python代码实现

    数据集特征不足的情况下,需要对数据集的特征进行扩充,两种方法:交互式特征和多项式特征. 向特征集添加交互式特征 交互式特征是在原始数据特征中添加交互项,使特征数量增加. Python代码实现: X_m ...

  7. python 数据归一化/标准化方法与代码(离差标准化,log归一化,标准化,比例归一化,反正切归一化)

    下面是一些常用的归一化.标准化的方法: 离差标准化 log归一化 标准化 比例归一化 反正切归一化 代码示例 import numpy as npdef min_max_normalization(v ...

  8. 商业数据分析模型及其核心Python代码_持续更新

    商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...

  9. python代码规范化_数据标准化方法及其Python代码实现

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法 ...

最新文章

  1. python 日志模块 logging
  2. idea getset的快捷键
  3. 使用Python和OpenCV检测图片上的条形码
  4. Andriod anim scale中的属性介绍以及Animation类的属性
  5. boost::geometry::util::calculation_type用法的测试程序
  6. 如何搭建企业局域网共享
  7. 每个私有静态方法都是新类的候选人
  8. 如何将php改成mp4,PHP 将视频转成 MP4 并获取视频预览图(用到ffmpeg)
  9. android 高度百分比,如何在Android中进行百分比高度和宽度?
  10. MDI多窗体1130
  11. 【转载】正则表达式30分钟入门教程
  12. 关于DOM的事件操作
  13. 微信蓝牙协议二:1800 or 18914E结尾和Varint压缩算法
  14. struts2 从一个action 跳转到另一个action的两种方法
  15. linux的源码安装步骤(以安装nginx为例)
  16. char可以存储汉字吗?为什么
  17. html弹出层很字体模糊了,由CSS3 transform 字体模糊问题揭示出浏览器渲染机制
  18. 串行通信(SCI模块)
  19. java aes 中文_java实现AES加密(解决中文解密后乱码问题,解决传输字符串后解密报错的问题)...
  20. 火狐浏览器安装FoxyProxy代理插件

热门文章

  1. composer-安装插件包
  2. runtime如何实现weak属性
  3. bzoj 1295: [SCOI2009]最长距离
  4. .net 2.0 制作 柱状图
  5. (转)基于svnserve的服务器,权限文件authz配置的常见问题及解答
  6. Rocksdb的优劣及应用场景分析
  7. tcp为什么需要3次握手和3次握手的过程
  8. 自己动手实现一个malloc内存分配器 | 30图
  9. 图文|Android 使用Thread 和多线程使用互斥锁
  10. android mysql 图片_android sqlite添加图片到数据库