1. 为什么需要归一化/标准化?
原因: 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征,即无量纲化。
2. 归一化
2.1 定义 通过对原始数据进行变换把数据映射到(默认为[0,1])之间
2.2 公式
文章图片
作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为02.3 sklearn中的Minmax归一化API
- sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
- MinMaxScalar.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
- MinMaxScalar.fit_transform(X)
文章图片
2.4.2 代码
import pandas as pd
from sklearn.preprocessing import MinMaxScalerdef minmax_demo():
'''
归一化
:return: None
'''
# 获取数据
data = https://www.it610.com/article/pd.read_csv('./database/dating.txt', sep='\t')
print(data)
# 1. 实例化转换器(feature_range是归一化的范围,即最小值-最大值)
transfer = MinMaxScaler(feature_range=(0, 1))
# 2. 调用fit_transform (只需要处理特征)
data = https://www.it610.com/article/transfer.fit_transform(data[['milage','Liters','Consumtime']])
print('Min-Max归一化处理后的结果:\n', data)
return Noneif __name__ == '__main__':
minmax_demo()
结果:
文章图片
2.4.3 总结
【sklearn|【数据预处理】sklearn实现数据预处理(归一化、标准化)】最大值和最小值是变化的,而且最大值和最小值容易受异常点的影响,所以归一化方法鲁棒性较差,只适合传统精确小数据场景。那么,这时候更倾向于使用标准化。
3. 标准化
3.1 定义 通过对原始数据进行变换把数据变换到均值为0,标准差为1范围内
3.2 公式
文章图片
作用于每一列,mean为平均值,σ为标准差3.3 sklearn中实现标准化的API
- sklearn.preprocessing.StandardScaler( )
- 处理之后每列来说所有数据都聚集在均值0附近 标准差差为1
- StandardScaler.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
import pandas as pd
from sklearn.preprocessing import StandardScalerdef stander_demo():
'''
标准化
:return:
'''
# 获取数据
data = https://www.it610.com/article/pd.read_csv('./database/dating.txt', sep='\t')
# 1. 实例化一个转换器
transfer = StandardScaler()
# 2. 调用fit_transform
transfer.fit_transform(data[['milage','Liters','Consumtime']])
print('标准化处理后的结果:\n', data)
print('每一列的平均值为:\n', transfer.mean_)
print('每一列的标准差为:\n', transfer.var_)return None
if __name__ == '__main__':
stander_demo()
结果:
文章图片
3.5 标准化总结 在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
4. 归一化、标准化对于异常值的表现
文章图片
推荐阅读
- sklearn|数据挖掘的五大流程、sklearn中常用的模块介绍、数据预处理、特征选择(过滤法+Embedded嵌入法+Wrapper包装法)
- sklearn机器学习|学习笔记——sklearn数据预处理和特征工程(过滤法、嵌入法、包装法)
- jupyter|pandas数据处理简单实例 ——基于jupyter
- sklearn|Sklearn中数据预处理
- Python|Python数据分析与挖掘进阶篇3——数据的预处理(清洗、集成、变换)附实例!
- #|【Python数据分析学习实例】pandas库数据预处理
- pandas|数据挖掘代码实例学习——Pandas、sklearn数据预处理(包含pandas库以及所需依赖包安装教程)
- network|PYTHONP网络编程Pycharm新版本自动设置虚拟开发环境
- NLP|深度学习之文本分类 ----FastText