数据归一化与标准化均是数据特征无量纲化处理方式,而无量纲化是指通过一个合适的变量替代,将一个涉及物理量的方程的部分或全部的单位移除,以求简化实验或者计算的目的,是科学研究中一种重要的处理思想。

无量纲处理主要将数据按比例缩放,使之落入一个小的特定区间,一般目的在于:去除数据的单位限制,转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

数据特征无量纲化主要有以下优点:
1、加速模型求解,例如模型使用梯度下降法求最优解时,经过归一化/标准化处理可以加快结果收敛速度;
2、提升模型精度,对于KNN、聚类等算法需要求解样本点之间的距离时,通过特征无量纲化,避免某一特征取值域较大特征主导距离计算,以此提高模型精度。

归一化(Normalization 或 Min-Max Scaling)

数据归一化是将数据x按照最小值中心化后,再按照极差(最大值-最小值)进行缩放,最终数据会被收敛到【0,1】之间。
归一化公式如下:

标准化(Standardization,又称 Z-score normalization)

数据标准化是指数据按均值中心化后,再按照标准差缩放,数据就会服从均值为0,方差为1的标准正态分布。

标准化公式如下:

标准化和归一化区别:

首先标准化和归一化都不会改变数据分布,只是对数据进行线性无量纲处理,通过相应的缩放和平移使数据发生改变,但并没有改变原始数据的排列顺序。

import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt# 创建数组
data_rn = np.random.randint(-10, 10, 10).reshape(5, 2)plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data_rn);
plt.subplot(1, 2, 2)
sns.distplot(data_rn);

# 归一化
scales_mm = MinMaxScaler()
data_rn_new = scales_mm.fit(data_rn).transform(data_rn)
# 标准化
scales_ss = StandardScaler()
data_rn_new1 = scales_ss.fit(data_rn).transform(data_rn)plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data_rn_new);
plt.subplot(1, 2, 2)
plt.plot(data_rn_new1);

plt.subplots(figsize=(10, 4))
plt.subplot(1, 2, 1)
sns.distplot(data_rn_new);
plt.subplot(1, 2, 2)
sns.distplot(data_rn_new1);

从上图看出原始数据排序并未发生变化,其次归一化Normalization默认将数据缩放到【0,1】之间,但是标准化Standardiza没有严格的区间,变化后的数据没有范围,只是数据整体的均值为0,标准差为1

此外,归一化并不会消除异常值影响,其缩放比例与极值有关,因此对于存在异常值的数据,归一化并不是一个好的选择;而标准化缩放比例和整体数据集有关,因为其针对数据方差进行数据缩放。

数据处理时如何进行两种方法的选择

一般情况下,因为MinMaxScaler对异常值较为敏感,所以优先选择StandardScaler进行特征缩放,例如聚类、逻辑回归、支持向量机、PCA等。

但是在数据缩放不涉及距离、梯度等计算,并且对数据的范围有严格要求时,就可以使用MinMaxScaler进行数据缩放。

但并不是所有情况都涉需要标准化和归一化:

类似决策树模型,在节点分裂的时候计算的是信息增益,标准化后并不能大幅提高模型的计算速度;

类似概率模型,并不关心变量的值,只关心变量的分布和变量之间的条件概率。

综上所述,一般在特征无量纲化的时候,如果没有硬性规定(缩放范围、距离计算等),可以先使用标准化,效果不好再试试归一化。

参考文献:(81条消息) 数据处理中的标准化、归一化,究竟是什么?_小一的学习笔记的博客-CSDN博客_数据标准化是什么意思

python数据挖掘学习01:数据归一化与标准化相关推荐

  1. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  2. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  3. python 归一化_Python 数据归一化、标准化、正则化 (机器学习)

    数据归一化.标准化.正则化 1.归一化 是将数据放缩到0~1区间,利用公式(x-min)/(max-min) 2.标准化 将数据转化为标准的正态分布,均值为0,方差为1 3.正则化 正则化的主要作用是 ...

  4. python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图

    python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...

  5. python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析

    #2018-04-05 16:57:26 April Thursday the 14 week, the 095 day SZ SSMR python数据挖掘学习笔记]十九.鸢尾花数据集可视化.线性回 ...

  6. python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合

    #2018-03-28 10:02:08 March Wednesday the 13 week, the 087 day SZ SSMR python数据挖掘学习笔记]十四.Scipy调用curve ...

  7. python数据挖掘学习笔记】十.Pandas、Matplotlib、PCA绘图实用代码补充

    #2018-03-23 18:56:38 March Friday the 12 week, the 082 day SZ SSMR https://blog.csdn.net/eastmount/a ...

  8. 数据归一化、标准化和去中心化

    数据预处理,一般有数据归一化.标准化和去中心化. 归一化 将数据映射到[0,1]或[-1,1]区间范围内,不同特征的量纲不同,值范围大小不同,存在奇异值,对训练有影响. 标准化 将数据映射到满足标准正 ...

  9. python 数据挖掘 之 对数据进行简单预处理(1)

    python 数据挖掘 之 对数据进行简单预处理 在我们对数据集进行数据挖掘之前,需要先对数据集进行简单的处理,让数据集变得更规范更具有代表性. 对数据集进行的预处理又许多种,接下来我就简单说几种常用 ...

最新文章

  1. 不是我吹,这个idea插件你真没用过!
  2. vue实现点击改变颜色
  3. 超微服务器 旧系统盘 新服务器,超微服务器做系统
  4. leetcode413. 等差数列划分(动态规划)
  5. python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载
  6. 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
  7. php整数型转字符串,php如何将整数转为字符串
  8. cdlinux 无线网密码破解
  9. 怎么做真人qq秀_【假期怎么过】看完这8部真人秀,再去英国留学!
  10. java怎么制作网页_如何制作网页
  11. 10.柱状图-----人口普查各地区人口排行榜
  12. 大写罗马数字(大写罗马数字3)
  13. linux cd是什么目录,linux cd是什么意思?
  14. Sleep函数--使得程序暂停一段时间(单位毫秒)
  15. 真◉彻底解决 gcr、quay、DockerHub 镜像下载难题!
  16. RabbitMQ 开发时指定消息消费者的方式
  17. graphpad7.04多组比较p值_GraphPad中国官网 - Prism 8 统计指南 - 对P值的更多错误解读...
  18. Spring4:AOP
  19. 微信浏览器页面样式不生效
  20. mpv播放器键盘快捷键

热门文章

  1. Java 添加Word目录的2种方法
  2. 一文看懂产品运营的分析方法
  3. mooc付费视频下载
  4. PingTools – 非常实用的全能网络工具[Android]
  5. 大数据Spark高可用环境之Scala语言的下载安装
  6. 苹果推送 macOS 13 Ventura 的第一个公开测试版
  7. 如何快速入门Comsol?
  8. github代码比对颜色介绍
  9. Socket编程简单示例
  10. 点分治学习:树的重心(质心)