c语言sscanf函数的用法是什么
608
2022-08-25
【Python】数据分析.pandas数据预处理.标准化数据
文章目录
数据分析.pandas数据预处理.标准化数据
一、离差标准化数据二、标准差标准化数据三、小数定标标准化数据
数据分析.pandas数据预处理.标准化数据
不同特征之间往往具有不同的量纲,由此所造成的数值间的差异可能很大,在涉及空间距离计算或梯度下降法等情况的时候不对其进行处理会影响到数据分析结果的准确性。为了消除特征之间的量纲和取值范围差异可能会造成的影响,需对数据进行标准化处理,也可以称为规范化处理。
一、离差标准化数据
import pandas as pdimport numpy as np# 读取数据detail = pd.read_csv('data/detail.csv',index_col=0,encoding='gbk')# 自定义离差标准化函数def minmaxscale(data): data=(data-data.min())/(data.max()-data.min()) return data# 对菜品订单表售价和销量做离差标准化data1 = minmaxscale(detail['counts'])data2 = minmaxscale(detail['amounts'])data3 = pd.concat([data1,data2],axis=1)print('离差标准化之前销量和售价数据前五行为:\n',detail[['counts','amounts']].head())print('离差标准化之后销量和售价数据前五行为:\n',data3.head())
通过离差标准化前后的对比,可以发现原先数值与映射的值相对应;而销量对应列变为了0,是因为只要出现在订单表上的数据都是同一个订单点的菜,最少份数是1,当数据和最小值相等时就会变为0;切菜品价格数据进行离差标准化后数之间的差值很小,是由于数据极差过大。
缺点: 当数据的极差过大时,离差标准化趋于0; 当数据发生更改后要重新确定[min,max]范围,以免引起系统报错。
二、标准差标准化数据
##自定义标准差标准化函数def StandardScaler(data): data=(data-data.mean())/data.std() return data##对菜品订单表售价和销量做标准化data4=StandardScaler(detail['counts'])data5=StandardScaler(detail['amounts'])data6=pd.concat([data4,data5],axis=1)print('标准差标准化之前销量和售价数据为:\n', detail[['counts','amounts']].head())print('标准差标准化之后销量和售价数据为:\n',data6.head())
通过对比可以发现,标准差标准化后的数值区间不限于[0,1],还会存在负值,同时保留了数数据的分布情况。
三、小数定标标准化数据
##自定义小数定标差标准化函数def DecimalScaler(data): data=data/10**np.ceil(np.log10(data.abs().max())) return data##对菜品订单表售价和销量做标准化data7=DecimalScaler(detail['counts'])data8=DecimalScaler(detail['amounts'])data9=pd.concat([data7,data8],axis=1)print('小数定标标准化之前的销量和售价数据:\n', detail[['counts','amounts']].head())print('小数定标标准化之后的销量和售价数据:\n',data9.head())
根据小数定标标准化数据后,我们进行回头检测,abs()查出数据绝对值的最大值为178三位数,再使用np.log10()得到10为底的对数,最后用np.ceil()得出向上取整的最小整数3.
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~