pandas对Dataframe数据进行标准化

数据归一化可以提升模型收敛速度,加快梯度下降求解速度,提升模型精度,消除量纲得影响,简化计算
常用的归一化方式有min_max标准化和Z-Score标准化

#生成dataframe格式数据
import numpy as np
import pandas as pd

data = pd.DataFrame(np.arange(12).reshape(3,4),columns = list('abcd'))
data
#数据结果:
	a	b	c	d
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11

#最小最大归一化:min_max标准化
#对所有列进行归一化
min_max_norm1 = (data-data.min())/(data.max()-data.min())
min_max_norm2 = data.apply(lambda x:(x-np.min(x))/(np.max(x)-np.min(x)))
min_max_norm2
#结果:
	a	b	c	d
0	0.0	0.0	0.0	0.0
1	0.5	0.5	0.5	0.5
2	1.0	1.0	1.0	1.0

#对某一列进行归一化
data['min_max_norm_d'] = (data['d']-data['d'].min())/(data['d'].max()-data['d'].min())
data
#结果:
	a	b	c	d	min_max_norm_d
0	0	1	2	3	0.0
1	4	5	6	7	0.5
2	8	9	10	11	1.0

#Z-Score 标准化 :将原来的数据转为符合均值为0,标准差为1的正态分布的新数据
z_score1 = (data-data.mean())/data.std()
z_score2 = data.apply(lambda x:(x-x.mean())/x.std())
z_score2
#结果:
	a	b	c	d	min_max_norm_d
0	-1.0 -1.0 -1.0 -1.0	-1.0
1	0.0	0.0	0.0	0.0	0.0
2	1.0	1.0	1.0	1.0	1.0

#使用sklearn库中的StandardScaler()进行归一化
from sklearn import preprocessing
zscore = preprocessing.StandardScaler()
z_score = zscore.fit_transform(data)
z_score
#结果:
array([[-1.22474487, -1.22474487, -1.22474487, -1.22474487, -1.22474487],
       [ 0.        ,  0.        ,  0.        ,  0.        ,  0.        ],
       [ 1.22474487,  1.22474487,  1.22474487,  1.22474487,  1.22474487]])

总结:
当数据本身就服从正态分布时,使用z-score;
当有离群值时,使用z-score;min-max比较容易受利群值得影响.

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值