栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

创建概率分布的混合样本

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建概率分布的混合样本

从分布的混合中采样(在其中添加了一些系数为c_1,c_2,…,c_n的PDF)相当于分别独立采样,然后对于每个索引,以概率c_k从第k个样本中选择值。

后者的混合步骤可以有效地完成

numpy.random.choice
。这是混合三个分布的示例。分布在中列出
distributions
,系数在中列出
coefficients
。有一个胖正态分布,一个均匀分布和一个狭窄的正态分布,系数为0.5、0.2、0.3。根据给定的系数,混合发生在
data[np.arange(sample_size),random_idx]
之后
random_idx

import numpy as npimport matplotlib.pyplot as pltdistributions = [    {"type": np.random.normal, "kwargs": {"loc": -3, "scale": 2}},    {"type": np.random.uniform, "kwargs": {"low": 4, "high": 6}},    {"type": np.random.normal, "kwargs": {"loc": 2, "scale": 1}},]coefficients = np.array([0.5, 0.2, 0.3])coefficients /= coefficients.sum()      # in case these did not add up to 1sample_size = 100000num_distr = len(distributions)data = np.zeros((sample_size, num_distr))for idx, distr in enumerate(distributions):    data[:, idx] = distr["type"](size=(sample_size,), **distr["kwargs"])random_idx = np.random.choice(np.arange(num_distr), size=(sample_size,), p=coefficients)sample = data[np.arange(sample_size), random_idx]plt.hist(sample, bins=100, density=True)plt.show()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号