本文简要介绍 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)
:从引擎中绘制n
。workers
用于并行性。例如,请参见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]])
相关用法
- Python SciPy qmc.Sobol用法及代码示例
- Python SciPy qmc.LatinHypercube用法及代码示例
- Python SciPy qmc.update_discrepancy用法及代码示例
- Python SciPy qmc.discrepancy用法及代码示例
- Python SciPy qmc.MultinomialQMC用法及代码示例
- Python SciPy qmc.MultivariateNormalQMC用法及代码示例
- Python SciPy qmc.geometric_discrepancy用法及代码示例
- Python SciPy qmc.Halton用法及代码示例
- Python SciPy qmc.scale用法及代码示例
- Python SciPy qmc.PoissonDisk用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy stats.anderson用法及代码示例
- Python SciPy ClusterNode.pre_order用法及代码示例
- Python SciPy stats.iqr用法及代码示例
- Python SciPy FortranFile.read_record用法及代码示例
- Python SciPy ndimage.correlate用法及代码示例
- Python SciPy special.exp1用法及代码示例
- Python SciPy special.expn用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy ndimage.morphological_gradient用法及代码示例
- Python SciPy distance.sokalmichener用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy csc_array.diagonal用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.qmc.QMCEngine。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。