伯努利限制玻爾茲曼機#
- 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
將轉換器擬合到X
和y
,並回傳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
配置
transform
和fit_transform
的輸出。"default"
: 轉換器的預設輸出格式"pandas"
: DataFrame 輸出"polars"
: Polars 輸出None
: 轉換配置保持不變
1.4 版本新增: 新增了
"polars"
選項。
- 回傳值:
- self估計器實例
估計器實例。