当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy qmc.QMCEngine用法及代码示例


本文简要介绍 python 语言中 scipy.stats.qmc.QMCEngine 的用法。

用法:

class  scipy.stats.qmc.QMCEngine(d, *, optimization=None, seed=None)#

用于子类化的通用Quasi-Monte Carlo 采样器类。

QMCEngine 是构造特定Quasi-Monte Carlo 采样器的基类。它不能直接用作采样器。

参数

d int

参数空间的维度。

optimization {无,“random-cd”,“lloyd”},可选

是否使用优化方案来提高采样后的质量。请注意,这是一个后处理步骤,不能保证样品的所有属性都得到保留。默认为“无”。

  • random-cd:坐标的随机排列以降低中心差异。基于中心差异的最佳样本不断更新。与使用其他差异度量相比,基于中心差异的采样对 2D 和 3D 子投影显示出更好的 space-filling 鲁棒性。

  • lloyd:使用修改后的Lloyd-Max 算法扰动样本。该过程收敛到等间隔的样本。

seed {无,整数, numpy.random.Generator },可选

如果种子是 int 或 None,一个新的numpy.random.Generator是使用创建的np.random.default_rng(seed).如果种子已经是一个Generator实例,然后使用提供的实例。

注意

按照惯例,样本分布在半开区间 [0, 1) 上。类的实例可以访问属性:d 用于维度;和 rng 用于随机数生成器(用于 seed )。

子类化

当子类化 QMCEngine 以创建新的采样器时,必须重新定义 __init__random

  • __init__(d, seed=None) :至少修复尺寸。如果采样器没有利用 seed(确定性方法,如 Halton),则可以省略此参数。

  • _random(n, *, workers=1) :从引擎中绘制nworkers 用于并行性。例如,请参见 Halton

可选地,其他两种方法可以被子类覆盖:

  • reset:将引擎重置到原始状态。

  • fast_forward :如果序列是确定性的(如 Halton 序列),则 fast_forward(n) 将跳过 n 第一次绘制。

例子

要创建基于 np.random.random 的随机采样器,我们将执行以下操作:

>>> from scipy.stats import qmc
>>> class RandomEngine(qmc.QMCEngine):
...     def __init__(self, d, seed=None):
...         super().__init__(d=d, seed=seed)
...
...
...     def _random(self, n=1, *, workers=1):
...         return self.rng.random((n, self.d))
...
...
...     def reset(self):
...         super().__init__(d=self.d, seed=self.rng_seed)
...         return self
...
...
...     def fast_forward(self, n):
...         self.random(n)
...         return self

在对 QMCEngine 进行子类化以定义我们要使用的采样策略后,我们可以创建一个用于采样的实例。

>>> engine = RandomEngine(2)
>>> engine.random(5)
array([[0.22733602, 0.31675834],  # random
       [0.79736546, 0.67625467],
       [0.39110955, 0.33281393],
       [0.59830875, 0.18673419],
       [0.67275604, 0.94180287]])

我们还可以重置生成器的状态并再次重新采样。

>>> _ = engine.reset()
>>> engine.random(5)
array([[0.22733602, 0.31675834],  # random
       [0.79736546, 0.67625467],
       [0.39110955, 0.33281393],
       [0.59830875, 0.18673419],
       [0.67275604, 0.94180287]])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.qmc.QMCEngine。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。