You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame前45列添加适配分布的噪声增强时序数据?

针对时序DataFrame前45列添加适配分布的噪声方案

方法1:核密度估计(KDE)生成同分布噪声

KDE无需预设分布类型,能直接拟合每列数据的真实分布,生成匹配的噪声扰动,适合特征分布差异显著的场景。

代码实现:

import pandas as pd
import numpy as np
from scipy.stats import gaussian_kde

# 假设df是你的原始时序DataFrame
augmented_df = df.copy()

# 遍历前45列添加适配分布的噪声
for col in df.columns[:45]:
    col_data = df[col].values
    # 拟合当前列的KDE模型
    kde_model = gaussian_kde(col_data)
    # 生成与原数据行数一致的噪声,可通过系数调整扰动强度(示例用0.1)
    # 噪声基于该列分布的偏差生成,避免破坏原有分布特征
    noise = (kde_model.resample(len(col_data))[0] - col_data.mean()) * 0.1
    # 应用噪声到增强数据
    augmented_df[col] += noise

方法2:Bootstrap采样生成噪声

直接从列的现有数据中带放回采样作为噪声,完全匹配原分布,实现简单且无分布假设。

代码实现:

import pandas as pd
import numpy as np

augmented_df = df.copy()

for col in df.columns[:45]:
    col_data = df[col].values
    # 带放回采样生成噪声,缩放系数控制扰动幅度(示例用0.05)
    noise = np.random.choice(col_data, size=len(col_data), replace=True) * 0.05
    augmented_df[col] += noise
异常值处理建议
  1. 先甄别异常值成因:

    • 如果是传感器故障、数据录入错误导致的无效异常值,建议用中位数插值、时序插值等方式填充,而非直接删除(避免破坏时序连续性);
    • 如果是业务场景中的真实突发异常(如设备故障、峰值事件),建议保留,这类数据对模型学习极端场景很重要。
  2. 噪声生成前预处理异常值:
    异常值会干扰分布拟合的准确性,导致生成的噪声包含不合理的极端值,因此建议在生成噪声前处理掉无效异常值。

  3. 不建议主动添加异常值:
    常规数据增强的目标是扩充正常分布的样本,提升模型泛化能力,主动添加异常值会引入无关干扰,除非你的任务是异常检测,需要针对性生成异常样本。

内容的提问来源于stack exchange,提问作者Perrupi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:52:43