【问题标题】:How to generate random data off of existing sample data?如何从现有样本数据中生成随机数据?
【发布时间】:2019-02-01 17:25:40
【问题描述】:

我有一组现有数据,比如说:

sample_data = [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4]

从这些样本数据中,我想生成一组具有一定长度的随机数据。这不应该脱离样本数据,而是脱离样本数据生成的分布。

如果我想要 5 个随机点的预期输出:

输出数据 = [3.4,2.3,1.5,5.2,1.3]

【问题讨论】:

标签: python python-3.x random


【解决方案1】:

使用random.sample

import random

sample_data = [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4]
# if you want to select 5 samples from above data
print(random.sample(sample_data, 5))

输出:

[3, 2, 2, 4, 2]

【讨论】:

  • 嘿-我不想从数据中选择x个样本,而是根据现有数据生成数据。
  • 你的前句和后句有什么区别?也许您需要编辑问题并进一步详细说明。
  • 澄清一下 - 我想找到一个数据集的分布拟合,然后根据该分布创建一个随机数据集。
  • @BrianChen 这不是问题中所问的,请编辑。
【解决方案2】:
import numpy as np
length = 3
sample_data = [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4]

np.random.choice(sample_data, length, False) #Sampling without replacement
Out[287]: array([4, 4, 2])

【讨论】:

  • 嘿-我不想从数据中选择x个样本,而是根据现有数据生成数据。
  • @BrianChen 只需从上面的代码中删除 False 并运行长度为 30 的代码,例如
  • 它仍然只是从数据集中输出值——而不是根据分布生成新的数据点。
  • 根据分布生成新数据点是什么意思?你能详细说明一下吗?
  • 嘿,感谢您的回复 - 我希望 python 确定数据最适合的分布类型(以及参数)并使用这些数据从这个新数据中创建 x 数量的随机数据分布/参数。比如我的数据集最适合(10,1)的正态分布,然后用这个(10,1)的正态分布生成15个新数据点
【解决方案3】:

这个问题有一个重要的前提需要决定:你想要什么样的分布?。现在作为人类,当我们有足够的数据时,我们可能可以根据分布的形状对分布进行分类。但是机器不会,要安装分布类型,比如对新输入进行统一或二项式是任意的。在这里,我将用统计的黄金标准——正态分布提供一个简短的答案(根据中心极限定理,足够大的样本量会收敛到正态)

import numpy as np

sample_data = [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4]
size = 5
new_samples = np.random.normal(np.mean(sample_data), np.std(sample_data), size)

>>> new_samples
array([ 2.01221231,  2.62772975,  1.79965428,  3.83601719,  2.44967777])

新样本由假设原始样本的均值和标准差的正态分布生成。

【讨论】:

  • 嘿,感谢您的回复 - 我希望 python 确定数据最适合的分布类型(以及参数)并使用这些数据从这个新数据中创建 x 数量的随机数据分布/参数。例如,我的数据集最适合 (10,1) 的正态分布,然后使用 (10,1) 的这个正态分布生成 15 个新数据点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2011-09-05
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多