本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。