详细内容或原文请订阅后点击阅览
稳健异常值检测的 5 种基本方法
异常值很容易破坏您构建的任何预测分析模型的性能:稳健地检测和处理它们对于任何数据项目都至关重要。本文列出并比较了检测它们的五种基本方法。
来源:KDnuggets简介
在探索数据集中是否遇到过一些奇怪的数据点?一个或几个看起来与绝大多数观察结果过度不同,从而极大地扭曲了你的方法并扩大了方差?我也去过那里。这些点是异常值。它们的影响不仅限于改变数据统计数据:异常值很容易破坏您构建的任何预测分析模型的性能,因此稳健地检测和处理它们对于任何数据项目都至关重要。本文列出并比较了检测它们的五种基本方法,并为每种方法提供了一个简短的 Python 示例。
1. Z 分数方法
Z 分数计算是一种简单的方法,最适合正态分布的数据变量。它测量每个点与平均值的标准差。本质上,Z 分数为 3 或更高(或 -3 或更低)的数据点被标记为异常值:这意味着该点与平均值之间的距离超过三个标准差。尽管它很简单,但它的缺点是均值和标准差本质上对极值高度敏感。
将 numpy 导入为 np
从 scipy 导入统计数据
数据 = np.array([10, 12, 11, 13, 12, 11, 10, 12, 11, 13, 250])
z_scores = np.abs(stats.zscore(数据))离群值 = 数据[z_scores > 3]打印(异常值)输出:2. 四分位距 (IQR) 法将 numpy 导入为 np数据 = np.array([10, 12, 11, 13, 12, 11, 10, 12, 11, 13, 250])q1, q3 = np.percentile(数据, [25, 75])iqr = q3 - q1lower_fence = q1 - 1.5 * iqrupper_fence = q3 + 1.5 * iqr离群值 = 数据[(数据 < lower_fence) | (数据> upper_fence)]打印(异常值)3. 隔离森林将 numpy 导入为 np从 sklearn.ensemble 导入 IsolationForest数据 = np.array([10, 12, 11, 13, 12, 11, 10, 12, 11, 13, 250]).reshape(-1, 1)模型= IsolationForest(污染= 0.1,random_state = 42)预测 = model.fit_predict(数据)离群值 = 数据[预测 == -1]打印(异常值)
