當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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