小工具知识网

当前位置: 首页 > 行业知识 > 找出异常点 python

行业知识

找出异常点 python

2026-10-30 04:18:17 来源:互联网转载

统计学方法

zscore

原���:

Z-score 基于正态分布理论,它量化了数据点距离数据集平均值的相对标准偏差。

通常,如果 Z-score 的绝对值超过某个阈值(如3或更大),该数据点就被认为是异常值。这是因为正态分布下,大约99.7%的数据点应当落在平均值 ± 3标准差的范围内。

import numpy as npdef find_outliers_1d(data, z_threshold=3):    """    使用Z-score方法在一维数据中查找异常值。        参数:    data (np.ndarray): 一维数据数组    z_threshold (float): Z-score阈值,默认为3        返回:    np.ndarray: 异常值数组    """        # 计算数据的均值和标准差    mean = np.mean(data)    std_dev = np.std(data)    # 计算Z-score并找到绝对值大于阈值的索引    z_scores = np.abs((data - mean) / std_dev)    outlier_indices = np.where(z_scores > z_threshold)[0]    # 返回异常值    return data[outlier_indices]

分位数IQR

IQR 方法不依赖于数据的正态分布特性,而是基于数据的四分位数进行异常值检测。它关注的是数据内在的局部变异度,尤其适合处理非正态分布的数据。

计算过程包括:

计算数据的第一四分位数(Q1)、第三四分位数(Q3)和四分位距(IQR):IQR=Q3−Q1IQR = Q3 - Q1IQR=Q3−Q1。

设定异常值的界限:

任何低于下限或高于上限的数据点被认为是异常值。

# 假设有如下数据data = pd.Series([10, 20, 30, 40, 50, 60, 70, 800, 900, 1000])# 计算四分位数q1 = data.quantile(0.25)q3 = data.quantile(0.75)iqr = q3 - q1# 计算异常值边界lower_bound = q1 - 1.5 * iqrupper_bound = q3 + 1.5 * iqr# 标记和筛选异常值outliers = data[(data  upper_bound)]normal_values = data[(data >= lower_bound) & (data 

上一篇:怎么判断是服务器bug?

下一篇:怎么写netty服务器?