网站怎么做内链外链,外包项目网站,网站建设公司需要申请icp吗,下列关于网站制作的写在前面#xff1a; 首先感谢兄弟们的订阅#xff0c;让我有创作的动力#xff0c;在创作过程我会尽最大能力#xff0c;保证作品的质量#xff0c;如果有问题#xff0c;可以私信我#xff0c;让我们携手共进#xff0c;共创辉煌。 路虽远#xff0c;行则将至#…写在前面 首先感谢兄弟们的订阅让我有创作的动力在创作过程我会尽最大能力保证作品的质量如果有问题可以私信我让我们携手共进共创辉煌。 路虽远行则将至事虽难做则必成。只要有愚公移山的志气、滴水穿石的毅力脚踏实地埋头苦干积跬步以至千里就一定能够把宏伟目标变为美好现实。 今天给大家分享一个异常值处理的小方法它的名字叫3σ原则在实际项目中使用这个方法对异常数据进行处理模型精度必须猛涨。多的不说少的不唠下面开始今天的教程。
1、引言
异常值是指数据样本中的一些数值明显偏离其他的样本值这些偏离其他样本值的异常值也称离群点异常值分析则也称为离群点分析。
在机器学习、数据分析、数据挖掘项目中需要对数据集进行异常值处理包括直接删除或者数据修正这样处理的目的是方便后续更好地进行信息挖掘减少噪声数据的干扰提高分析的准确性[1]。
2、3σ原则
3σ原则又叫拉依达原则是一基于正态分布的数学原理它假设一组检测数据中只含有随机误差通过计算得到标准偏差σ然后按一定概率确定一个区间对于超过这个区间的误差就不属于随机误差而是粗大误差将含有粗大误差的数据进行剔除[2]。
在统计学中如果一个变量服从正态分布且它的均值是u, 标准差是σ那么将有
168.27%的数据会落在 u ± σ 内即数据分布在处于(u−σ, uσ)中的概率是0.6827
295.45%的数据会落在 u ± 2σ 内即数据分布在处于(u−2σ, u2σ)中的概率是0.9545
399.73%的数据会落在 u ± 3σ 内即数据分布在处于(u−3σ, u3σ)中的概率是0.9973
通常认为数据“Y”的取值几乎全部集中在μ-3σ,μ3σ)区间内超出这个范围的可能性仅占不到0.3%这些超出该范围的数据可以认为是异常值[2]。 (注此部分内容为3σ原则的定义已做了引用无不良引导不存在滥用原创的情况)
3、代码
3.1 数据
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm
import pandas as pd# 设置参数
s 0.5 # 形状参数σ较小的值会导致更重的右尾
mean 0 # 对数正态分布的底数μ对应的对数均值
scale np.exp(s**2) # 尺度参数exp(σ^2)确保对数正态分布的方差正确
n_samples 1000 # 样本数量 # 生成对数正态分布数据
data lognorm.rvs(ss, scalescale, sizen_samples) # 写入excel
df pd.DataFrame(data)
df.to_excel(data.xlsx, indexFalse, headerNone)# 绘制直方图
plt.hist(data, bins30, densityTrue, alpha0.6, colorg) # 绘制对数正态分布曲线作为参考
xmin, xmax plt.xlim()
x np.linspace(xmin, xmax, 100)
pdf_values lognorm.pdf(x, ss, scalescale)
plt.plot(x, pdf_values, k, linewidth2, labelLognormal Distribution (s{}).format(s)) # 设置图表标题和坐标轴标签
plt.title(Lognormal Distribution with Long Right Tail (s{}).format(s))
plt.xlabel(Value)
plt.ylabel(Probability Density)
plt.legend() # 显示图形
plt.grid(True)
plt.show()数据分布图如下 3.2 3σ代码
def three_sigma(data_df, column):out_index []mean_value data_df[column].mean() # 求平均值std_value data_df[column].std() # 求标准差# print(均值和标准差, mean_value, std_value)lower_bound mean_value-3*std_valueupper_bound mean_value3*std_valuerule (data_df[column] lower_bound) | (data_df[column] upper_bound) # 位于u-3std,u3std区间的数据是正常的不在这个区间的数据为异常的out data_df[column].index[rule]# print(异常索引:, out)out_index out.tolist() data_df.drop(out_index, inplaceTrue)return data_df上面的代码做了单列数据的异常剔除如果需要多列异常剔除需要对代码进行改写。
4、优缺点
4.1、3σ原则的优点
1.简单易懂3σ原则基于标准差的观念提供了一个直观且易于理解的判断标准。通过计算数据的平均值和标准差并与3σ进行比较可以快速判断数据是否处于正常范围内。
2.科学性和客观性由于3σ原则基于统计学原理其判断具有一定的科学性和客观性。它依赖于数据的统计特性而不是主观的、经验性的判断。
3.有效检测异常值根据正态分布的特性大约有99.73%的数据落在u±3σ范围内。因此当一个数据点落在这一范围之外时可以初步判断为异常值。
4.2、3σ原则的缺点
1.对样本量的依赖3σ原则的有效性依赖于样本量的大小。当样本量较小时使用3σ原则进行异常值检测可能不够可靠。因为小样本数据可能无法准确反映总体的分布特性。
2.对非正态分布数据的限制3σ原则主要适用于具有正态分布或近似正态分布特性的数据。对于非正态分布的数据3σ原则可能无法有效检测异常值甚至可能出现误判。
写在最后
在实际的数据挖掘项目中请结合自身数据情况酌情使用3σ原则。
参考资料
[1]https://zhuanlan.zhihu.com/p/572327280?utm_id0 [2]https://zhidao.baidu.com/question/585044313.html [3]https://www.sohu.com/a/365218206_387904 [4]https://blog.csdn.net/Jormungand_V/article/details/109775367 [5]https://blog.51cto.com/u_15834745/6011865 [6]https://www.cnblogs.com/Tree0108/p/12116099.html 请扫码关注下方的公众号让我们共同进步吧。