数据预处理:标准化和归一化

1. 定义

1.1 MinMax归一化

特征缩放到(0,1)或(-1,1)之间
公式:
( X i − m i n ( X i ) ) / ( m a x ( X i ) − m i n ( X i ) ) (X_i - min(X_i)) / (max(X_i)-min(X_i)) (Ximin(Xi))/(max(Xi)min(Xi))

1.2 Z-score标准化

缩放到均值为0,方差为1的状态(分布)
公式:
( X i − X ˉ ) / σ ( X i ) (X_i -\bar{X}) / \sigma{(X_i)} (XiXˉ)/σ(Xi)

2. 区别

2.1 相同点

都是对数据的一种线性变换

2.2 不同点

MinMax归一化:改变了原数据的分布,使得各个特征维度对目标函数的影响一致,即使扁平分布的数据变成类圆。

Z-score标准化:不改变原数据的分布,是不同度量之间的特征具有可比性,即不改变数据的几何距离。

注:MinMax归一化,极易受极端值的影响。

3. 应用场景

3.1 需要使用标准化或归一化的模型

LR, Kmeans,KNN,SVM等模型(理由待补充)

注:神经网络归一化,可以提高迭代速度,避免爆炸,
                   但是由于改变了原数据的分布,可能影响准确率。

3.2 不需要的模型

树模型:决策树(理由待补充)

4. python实现

4.1 MinMax归一化

from sklearn.preprocessing import MinMaxScaler
dict1 = {'长度':[15,17,2,10,9],'高度':[5,3,1,1,4]}
dict2 = {'长度':[5,8],'高度':[3,2]}
df = pd.DataFrame(dict1)
new_df = pd.DataFrame(dict2)
print(df)
print(new_df)
>>df
  长度	高度
0	15	5
1	17	3
2	2	1
3	10	1
4	9	4
>>new_df
  长度	高度
0	5	3
1	8	2
scaler = MinMaxScaler()
#从df中计算用于以后缩放的参数:min,max (按特征列)
scaler.fit(df)  
#以参照的缩放比例,对原数据进行缩放
scaler.transform(df) 
>>df_normal
0	0.86666667, 1.   
1   1.        , 0.5     
2   0.        , 0.    
3   0.53333333, 0. 
4   0.46666667, 0.75  
#以参照的缩放比例,对新数据进行缩放
scaler.transform(new_df) 
>>new_df_normal
0	0.2 , 0.5
1   0.4 , 0.25    
#以参照的缩放比例,还原缩放后的新数据
new_df_noraml = scaler.transform(new_df) 
scaler.inverse_transform(new_df_noraml)
>>new_df
0	5., 3.
1   8., 2.

4.2 Z-score标准化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值