python - 我应该如何随机生成异常值?

标签 python numpy

我正在生成一个随机数据集。我的数据集是连续的,并且有上限和下限。在某些随机点,我希望我的数据集具有高于和低于限制的异常值。这是我的代码。

generated_data = (12) * np.random.rand(100) + 630
outlier_data = (12) * np.random.rand(20) + (*HERE'S THE PROBLEM)
merged_data = np.concatenate((generated_data, outlier_data))

在此之后,我想我将重新整理 merged_data。但我不知道如何正确生成异常值。

最佳答案

只需独立生成数据的三个部分:首先是非离群值,然后是下离群值和上离群值,将它们合并在一起,最后将它们打乱:

def generate(median=630, err=12, outlier_err=100, size=80, outlier_size=10):
    errs = err * np.random.rand(size) * np.random.choice((-1, 1), size)
    data = median + errs

    lower_errs = outlier_err * np.random.rand(outlier_size)
    lower_outliers = median - err - lower_errs

    upper_errs = outlier_err * np.random.rand(outlier_size)
    upper_outliers = median + err + upper_errs

    data = np.concatenate((data, lower_outliers, upper_outliers))
    np.random.shuffle(data)

    return data

你会得到这样的结果:

>>> data = generate()
>>> data.shape
(100,)
>>> data.min()
518.1635764484727
>>> data.max()
729.9467630423616
>>> np.median(data)
629.9427184256936

关于python - 我应该如何随机生成异常值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55351782/

相关文章:

python - 读入文件 - 更改内容 - 写出到同一个文件

python - Numpy - 跨多个坐标查找匹配项

python - Numpy中的线段相交算法

导致退格键击的Python代码?

python - pip 显示错误 'lsb_release -a' 返回非零退出状态 1

python - 为 Python 安装 cx_Oracle

python - 具有嵌套灵活类型(np.void类型)的索引结构numpy数组

python - 在 Python 中打开 .h5 文件

python - 来自带有 matplotlib 的数组的 3D 曲线的线条颜色

python - 如何使 np.select() 的默认选择成为数组、系列或 DataFrame 的先前值