python数据挖掘学习01:数据归一化与标准化
数据归一化与标准化均是数据特征无量纲化处理方式,而无量纲化是指通过一个合适的变量替代,将一个涉及物理量的方程的部分或全部的单位移除,以求简化实验或者计算的目的,是科学研究中一种重要的处理思想。
无量纲处理主要将数据按比例缩放,使之落入一个小的特定区间,一般目的在于:去除数据的单位限制,转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
数据特征无量纲化主要有以下优点:
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:数据归一化与标准化相关推荐
- python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据
但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...
- Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据
#2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...
- python 归一化_Python 数据归一化、标准化、正则化 (机器学习)
数据归一化.标准化.正则化 1.归一化 是将数据放缩到0~1区间,利用公式(x-min)/(max-min) 2.标准化 将数据转化为标准的正态分布,均值为0,方差为1 3.正则化 正则化的主要作用是 ...
- python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图
python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...
- python数据挖掘学习笔记】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
#2018-04-05 16:57:26 April Thursday the 14 week, the 095 day SZ SSMR python数据挖掘学习笔记]十九.鸢尾花数据集可视化.线性回 ...
- python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合
#2018-03-28 10:02:08 March Wednesday the 13 week, the 087 day SZ SSMR python数据挖掘学习笔记]十四.Scipy调用curve ...
- 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 ...
- 数据归一化、标准化和去中心化
数据预处理,一般有数据归一化.标准化和去中心化. 归一化 将数据映射到[0,1]或[-1,1]区间范围内,不同特征的量纲不同,值范围大小不同,存在奇异值,对训练有影响. 标准化 将数据映射到满足标准正 ...
- python 数据挖掘 之 对数据进行简单预处理(1)
python 数据挖掘 之 对数据进行简单预处理 在我们对数据集进行数据挖掘之前,需要先对数据集进行简单的处理,让数据集变得更规范更具有代表性. 对数据集进行的预处理又许多种,接下来我就简单说几种常用 ...
最新文章
- 不是我吹,这个idea插件你真没用过!
- vue实现点击改变颜色
- 超微服务器 旧系统盘 新服务器,超微服务器做系统
- leetcode413. 等差数列划分(动态规划)
- python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载
- 解决物理机U盘安装Kali Linux2018.1,光驱无法加载问题
- php整数型转字符串,php如何将整数转为字符串
- cdlinux 无线网密码破解
- 怎么做真人qq秀_【假期怎么过】看完这8部真人秀,再去英国留学!
- java怎么制作网页_如何制作网页
- 10.柱状图-----人口普查各地区人口排行榜
- 大写罗马数字(大写罗马数字3)
- linux cd是什么目录,linux cd是什么意思?
- Sleep函数--使得程序暂停一段时间(单位毫秒)
- 真◉彻底解决 gcr、quay、DockerHub 镜像下载难题!
- RabbitMQ 开发时指定消息消费者的方式
- graphpad7.04多组比较p值_GraphPad中国官网 - Prism 8 统计指南 - 对P值的更多错误解读...
- Spring4:AOP
- 微信浏览器页面样式不生效
- mpv播放器键盘快捷键