伯努利限制玻爾茲曼機#

class sklearn.neural_network.BernoulliRBM(n_components=256, *, learning_rate=0.1, batch_size=10, n_iter=10, verbose=0, random_state=None)[原始碼]#

伯努利限制玻爾茲曼機(RBM)。

一個具有二元可見單元和二元隱藏單元的受限波茲曼機。參數使用隨機最大似然法 (Stochastic Maximum Likelihood, SML) 估計,也稱為持續對比散度 (Persistent Contrastive Divergence, PCD) [2]。

此實作的時間複雜度為 O(d ** 2),假設 d ~ n_features ~ n_components。

請在使用者指南中閱讀更多資訊。

參數:
n_componentsint,預設值=256

二元隱藏單元的數量。

learning_ratefloat,預設值=0.1

權重更新的學習率。 強烈建議調整此超參數。合理的值範圍在 10**[0., -3.] 之間。

batch_sizeint,預設值=10

每個小批次 (minibatch) 的樣本數量。

n_iterint,預設值=10

訓練期間在訓練資料集上執行的迭代/掃描次數。

verboseint,預設值=0

詳細程度。預設值為零,表示靜默模式。數值範圍為 [0, inf]。

random_stateint,RandomState 實例或 None,預設值=None

決定以下項目的隨機數生成:

  • 可見層和隱藏層的吉布斯採樣 (Gibbs sampling)。

  • 初始化組件,在擬合期間從層中採樣。

  • 在評分樣本時損壞數據。

傳遞一個 int 以在多個函式呼叫中產生可重現的結果。請參閱詞彙表

屬性:
intercept_hidden_形狀為 (n_components,) 的類陣列 (array-like)

隱藏單元的偏置值。

intercept_visible_形狀為 (n_features,) 的類陣列

可見單元的偏置值。

components_形狀為 (n_components, n_features) 的類陣列

權重矩陣,其中 n_features 是可見單元的數量,而 n_components 是隱藏單元的數量。

h_samples_形狀為 (batch_size, n_components) 的類陣列

從模型分佈中採樣的隱藏激活值,其中 batch_size 是每個小批次的樣本數量,而 n_components 是隱藏單元的數量。

n_features_in_int

fit 期間看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅在 X 具有全為字串的特徵名稱時定義。

在 1.0 版本中新增。

另請參閱

sklearn.neural_network.MLPRegressor

多層感知器迴歸器。

sklearn.neural_network.MLPClassifier

多層感知器分類器。

sklearn.decomposition.PCA

一種無監督的線性降維模型。

參考文獻

[1] Hinton, G. E., Osindero, S. and Teh, Y. A fast learning algorithm for

deep belief nets. Neural Computation 18, pp 1527-1554. https://www.cs.toronto.edu/~hinton/absps/fastnc.pdf

[2] Tieleman, T. Training Restricted Boltzmann Machines using

Approximations to the Likelihood Gradient. International Conference on Machine Learning (ICML) 2008

範例

>>> import numpy as np
>>> from sklearn.neural_network import BernoulliRBM
>>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
>>> model = BernoulliRBM(n_components=2)
>>> model.fit(X)
BernoulliRBM(n_components=2)

如需更詳細的使用範例,請參閱用於數字分類的受限波茲曼機特徵

fit(X, y=None)[原始碼]#

將模型擬合到資料 X。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}

訓練資料。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值=None

目標值 (對於無監督轉換為 None)。

回傳值:
selfBernoulliRBM

已擬合的模型。

fit_transform(X, y=None, **fit_params)[原始碼]#

擬合資料,然後轉換資料。

使用可選參數 fit_params 將轉換器擬合到 Xy,並回傳 X 的轉換版本。

參數:
X形狀為 (n_samples, n_features) 的類陣列

輸入樣本。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值=None

目標值 (對於無監督轉換為 None)。

**fit_paramsdict

額外的擬合參數。

回傳值:
X_new形狀為 (n_samples, n_features_new) 的 ndarray 陣列

轉換後的陣列。

get_feature_names_out(input_features=None)[原始碼]#

取得轉換的輸出特徵名稱。

輸出的特徵名稱會加上小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出的特徵名稱為:["class_name0", "class_name1", "class_name2"]

參數:
input_features字串型別的類陣列 (array-like) 或 None,預設值為 None

僅用於驗證特徵名稱,與 fit 中看到的名稱是否一致。

回傳值:
feature_names_out字串物件的 ndarray

轉換後的特徵名稱。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由 (metadata routing)。

請查看 使用者指南,瞭解路由機制如何運作。

回傳值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deep布林值 (bool),預設值為 True

若為 True,將返回此估計器和其中包含的子物件(也是估計器)的參數。

回傳值:
params字典 (dict)

參數名稱對應到它們的值。

gibbs(v)[原始碼]#

執行一個吉布斯採樣步驟。

參數:
v形狀為 (n_samples, n_features) 的 ndarray

可見層的起始值。

回傳值:
v_new形狀為 (n_samples, n_features) 的 ndarray

經過一個吉布斯步驟後的可見層數值。

partial_fit(X, y=None)[原始碼]#

將模型擬合到資料 X 的部分片段。

參數:
X形狀為 (n_samples, n_features) 的 ndarray

訓練資料。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值=None

目標值 (對於無監督轉換為 None)。

回傳值:
selfBernoulliRBM

已擬合的模型。

score_samples(X)[原始碼]#

計算 X 的偽對數似然率。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}

可見層的值。必須全部為布林值 (不檢查)。

回傳值:
pseudo_likelihood形狀為 (n_samples,) 的 ndarray

偽對數似然率的值 (對似然率的近似值)。

註解

此方法不具決定性:它計算 X 上的自由能,然後計算 X 的隨機損壞版本上的自由能,並返回差異的邏輯函數的對數。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱 介紹 set_output API,瞭解如何使用此 API 的範例。

參數:
transform{"default", "pandas", "polars"},預設值為 None

配置 transformfit_transform 的輸出。

  • "default": 轉換器的預設輸出格式

  • "pandas": DataFrame 輸出

  • "polars": Polars 輸出

  • None: 轉換配置保持不變

1.4 版本新增: 新增了 "polars" 選項。

回傳值:
self估計器實例

估計器實例。

set_params(**params)[原始碼]#

設定此估計器的參數。

此方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個元件。

參數:
**params字典 (dict)

估計器參數。

回傳值:
self估計器實例

估計器實例。

transform(X)[原始碼]#

計算隱藏層的激活機率,P(h=1|v=X)。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列,稀疏矩陣}

要轉換的資料。

回傳值:
h形狀為 (n_samples, n_components) 的 ndarray

資料的潛在表示。