使用变量的经验概率分布对数据框中的行进行采样
Sampling rows in data frame with an empirical probability distribution of a variable
我遇到了以下问题。
假设我们有一个包含少量变量的数据框。此外,一个变量 (var_A) 是一个概率分数——它的值范围从 0 到 1。我想从这个数据框中抽样行,这样更有可能选择具有更高值 var_A - 所以我想我必须从 var_A 的经验分布中得出结论。我知道如何按照 here 的建议实现 var_A 的 edf 函数,但我不知道如何使用此分布对行进行采样。
你能帮我解决这个问题吗?
谢谢
您可以使用numpy.random.choice以这种方式进行采样:
import numpy as np
num_dists = 4
num_samples = 10
var_A = np.random.uniform(0, 1, num_dists)
# ensure var_A sums to 1
var_A /= np.sum(var_A)
samples = np.random.choice(len(var_A), num_samples, p=var_A)
print('var_A: ', var_A)
print('samples: ', samples)
示例输出:
var_A: [ 0.23262621 0.02990421 0.22357316 0.51389642]
samples: [3 0 0 2 0 0 2 3 3 2]
我遇到了以下问题。
假设我们有一个包含少量变量的数据框。此外,一个变量 (var_A) 是一个概率分数——它的值范围从 0 到 1。我想从这个数据框中抽样行,这样更有可能选择具有更高值 var_A - 所以我想我必须从 var_A 的经验分布中得出结论。我知道如何按照 here 的建议实现 var_A 的 edf 函数,但我不知道如何使用此分布对行进行采样。
你能帮我解决这个问题吗?
谢谢
您可以使用numpy.random.choice以这种方式进行采样:
import numpy as np
num_dists = 4
num_samples = 10
var_A = np.random.uniform(0, 1, num_dists)
# ensure var_A sums to 1
var_A /= np.sum(var_A)
samples = np.random.choice(len(var_A), num_samples, p=var_A)
print('var_A: ', var_A)
print('samples: ', samples)
示例输出:
var_A: [ 0.23262621 0.02990421 0.22357316 0.51389642]
samples: [3 0 0 2 0 0 2 3 3 2]