首页 > 编程知识 正文

穿越火线安全数据检测异常,检测到游戏数据异常

时间:2023-05-03 21:07:08 阅读:195438 作者:4548

前言

3sigma:又称为拉依达准则
数据需要服从正态分布。在3sigma原则下,异常值如超过3倍标准差,那么可以将其视为异常值。

3σ原则
数值分布在(μ-σ,μ+σ)中的概率为0.6827
数值分布在(μ-2σ,μ+2σ)中的概率为0.9545
数值分布在(μ-3σ,μ+3σ)中的概率为0.9973
取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围的可能性仅占不到0.3%.

实例

采用3sigma对数据进行异常检测分析。
私聊数据集。
链接: https://pan.baidu.com/s/1eOt6eKtVuhThOamB5QQsnQ
提取码: 178j

#基于3sigma的异常值检测import numpy as npimport pandas as pdimport matplotlib.pyplot as plt #导入绘图库n = 3 # n*sigmacatering_sale = r'catering_sale.xls' #数据路径data = pd.read_excel(r'sale.xls', index_col = False) #读取数据data_y = data[u'销量']data_x = data[u'日期']def three_sigma(df_col): """ df_col:DataFrame数据的某一列 """ rule = (df_col.mean() - 3 * df_col.std() > df_col) | (df_col.mean() + 3 * df_col.std() < df_col) index = np.arange(df_col.shape[0])[rule] outrange = df_col.iloc[index] return outrange# data[u'销量'] = data['销量'].apply(lambda x: np.log(x))index_ = three_sigma(data[u'销量']).indexprint('n异常数据如下:n')# data[u'销量'] = data['销量'].apply(lambda x: np.exp(x))data.iloc[index_] 日期 销量 利润02015-03-0151.00420.0082015-02-216607.40450.001032014-11-0822.001800.001102014-11-0160.0060.001442014-09-279106.449106.44 plt.plot(data[u'日期'], data[u'销量'])plt.plot(data.iloc[index_][u'日期'], data.iloc[index_][u'销量'], 'ro')outlier = list(data.iloc[index_][u'销量'])outlier_x =list( data.iloc[index_][u'日期'])for j in range(len(outlier)): plt.annotate(outlier[j], xy=(outlier_x[j], outlier[j]), xytext=(outlier_x[j],outlier[j]))plt.show()

总结 3sigma一般适用于正态分布数据或者近似正态分布3也可以换成4或者5,在实际应用中可以根据业务场景来确定 k sigma中的k值

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。