异常值识别需据数据分布选择方法:正态分布用Z-score(阈值>3),偏态分布用IQR;盲目均值填充易扭曲规律,须结合业务逻辑。

异常值自动识别与替换不是“一刀切”,关键看数据分布特征和业务逻辑。盲目用均值或固定阈值填充,可能扭曲真实规律。
基于统计分布的智能识别
正态分布数据优先用Z-score,偏态数据改用IQR(四分位距)。Z-score > 3 或
- 用 scipy.stats.zscore() 计算Z值,配合 numpy.where() 定位索引
- IQR推荐用 numpy.percentile(arr, [25, 75]) 手动计算,避免pandas.quantile在重复值时的插值偏差
- 对多变量数据,别逐列独立检测——用马氏距离(Mahalanobis distance)识别多元异常组合
结合业务规则的动态阈值
纯统计方法会误杀合理极值。比如电商订单金额,单笔10万元可能是黑产,也可能是企业采购。需嵌入业务上下文:按用户等级、时间周期、品类维度分组后分别建阈值。
- 用 pandas.groupby().agg({'amount': ['mean', 'std', 'count']}) 获取分组统计基准
- 对高频操作字段(如登录失败次数),设定“过去7天均值+2倍标准差”作为实时告警线
- 把规则写成字典结构,便于配置化管理,例如:{'user_type': {'vip': {'max_login_fail': 10}, 'normal': {'max_login_fail': 3}}}
异常值替换策略要分类型处理
数值型、类别型、时间型异常不能统一填均值。类别字段填“Unknown”比填众数更安全;时间字段异常(如出生年份为2100)建议置空或转为NaT;而连续数值可考虑局部加权平均(如KNN均值)而非全局均值。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~