【数据预处理】sklearn实现数据预处理(归一化、标准化)
1. 为什么需要归一化/标准化?原因: 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征,即无量纲化。2. 归一化2.1 定义通过对原始数据进行变换把数据映射到(默认为[0,1])之间2.2 公式作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1
·
1. 为什么需要归一化/标准化?
原因: 特征的单位或者大小相差较大,或者某特征的方差相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其他的特征,即无量纲化。
2. 归一化
2.1 定义
通过对原始数据进行变换把数据映射到(默认为[0,1])之间
2.2 公式
作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0
2.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.4.1 数据集
2.4.2 代码
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
def minmax_demo():
'''
归一化
:return: None
'''
# 获取数据
data = pd.read_csv('./database/dating.txt', sep='\t')
print(data)
# 1. 实例化转换器(feature_range是归一化的范围,即最小值-最大值)
transfer = MinMaxScaler(feature_range=(0, 1))
# 2. 调用fit_transform (只需要处理特征)
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print('Min-Max归一化处理后的结果:\n', data)
return None
if __name__ == '__main__':
minmax_demo()
结果:
2.4.3 总结
最大值和最小值是变化的,而且最大值和最小值容易受异常点的影响,所以归一化方法鲁棒性较差,只适合传统精确小数据场景。那么,这时候更倾向于使用标准化。
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
3.4 代码示例
数据集同上
import pandas as pd
from sklearn.preprocessing import StandardScaler
def stander_demo():
'''
标准化
:return:
'''
# 获取数据
data = 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. 归一化、标准化对于异常值的表现
- 这是我看菜菜的视频课的笔记~
- 如果本文对你有所帮助,请点个赞再走哦~
更多推荐
已为社区贡献3条内容
所有评论(0)