目录
3σ 原则 | (u-3*σ ,u+3*σ ) |
离差标准化 | (x-min)/(max-min) |
标准差标准化 | (x-u)/σ |
小数定标标准化 | x/10**k k=np.ceil(log10(max(|x|))) |
1.3σ原则
u 均值
σ 标准差
正太分布的数据基本都分布在(u-3σ,u+3σ)范围内
其他的数据
import pandas as pd
import numpy as np
def three_sigma(se):
"""
自实现3σ原则,进行数据过滤
:param se:传进来的series结构数据
:return:去除异常值之后的series数据
"""
bool_id=((se.mean()-3*se.std())<se) & (se<(se.mean()+3*se.std()))
print(bool_id)
return se[bool_id]
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
#进行异常值处理
res=three_sigma(detail['amounts'])
print(detail.shape)
print(res.shape)
2.离差标准化
(x-min)/(max-min)
import pandas as pd
import numpy as np
def minmax_sca(data):
"""
离差标准化
param data:传入的数据
return:标准化之后的数据
"""
new_data=(data-data.min())/(data.max()-data.min())
return new_data
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
res=minmax_sca(detail[['amounts','counts']])
print(res)
data=res
bool_id=data.loc[:,'count']==1
print(data.loc[bool_id],'counts')
3.标准差标准化
(x-u)/σ
异常值对标准差标准化的影响不大
转化之后的数据--->均值0 标准差1
import pandas as pd
import numpy as np
def stand_sca(data):
"""
标准差标准化
:param data:传入的数据
:return:标准化之后的数据
"""
new_data=(data-data.mean())/data.std()
return new_data
#加载数据
detail=pd.read_excel('./meal_order_detail.xlsx')
res=stand_sca(detail[['amounts','counts']])
print(res)
print('res的均值:',res.mean())
print('res的标准差:',res.std())
4.小数定标标准化
x/(10^k)
k=math.ceil(log10(max(|x|)))
以10为底,x的绝对值的最大值的对数 最后进行向上取整
import pandas as pd
import numpy as np
def deci_sca(data):
"""
自实现小数定标标准化
:param data: 传入的数据
:return: 标准化之后的数据
"""
new_data=data/(10**(np.ceil(np.log10(data.abs().max()))))
return new_data
#加载数据
detail = pd.read_excel('./meal_order_detail.xlsx')
res = deci_sca(detail[['amounts', 'counts']])
print(res)
版权声明:本文为g_optimistic原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。