DolphinDB中如何按指定概率对数组进行随机抽样
DolphinDB 自定义概率随机抽样实现方案
DolphinDB 原生支持按指定概率数组开展加权随机抽样,完全覆盖 Python 中np.random.choice传入p参数实现的抽样能力,直接调用内置sample函数即可实现。
核心参数说明
sample函数用于随机抽样时,和需求匹配的参数规则如下:
- 第一参数传入待抽样的数组/向量,对应
np.random.choice的a参数 - 第二参数传入需要抽取的样本总数量,对应
np.random.choice的size参数 - 第三参数
replace控制是否有放回抽样,默认值为true,和np.random.choice的默认行为一致 - 第四参数
weights传入每个元素对应的抽取概率/权重,对应np.random.choice的p参数,注意该参数不需要强制做归一化处理,传入的权重和不需要等于1,系统会自动完成归一化计算
等价实现代码
和示例Python代码完全对应的DolphinDB实现如下:
// 定义待抽样数组与对应概率 a = [1, 2, 3, 4] p = [0.1, 0.1, 0.3, 0.5] // 有放回抽取100个符合概率分布的样本 sampled_result = sample(a, 100, weights=p)
注意事项
- 如果需要做无放回加权抽样,将
replace参数显式设为false即可,此时要求抽样量不能超过待抽样数组的元素总数,否则会抛出运行错误 - 如果需要固定抽样结果实现可复现,可在执行抽样代码前调用
rand(seed_value)设置固定随机种子,例如执行rand(1024)后再运行抽样逻辑,多次运行得到的抽样结果完全一致 - 传入的权重数组长度必须和待抽样数组长度完全相等,否则会触发参数不匹配报错
内容的提问来源于stack exchange,提问作者YaN
相关产品推荐
相关产品推荐

