本文簡要介紹python語言中 sklearn.decomposition.MiniBatchDictionaryLearning
的用法。
用法:
class sklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, *, alpha=1, n_iter=1000, fit_algorithm='lars', n_jobs=None, batch_size=3, shuffle=True, dict_init=None, transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, verbose=False, split_sign=False, random_state=None, positive_code=False, positive_dict=False, transform_max_iter=1000)
小批量字典學習。
查找在對擬合數據進行稀疏編碼時表現良好的字典(一組原子)。
解決優化問題:
(U^*,V^*) = argmin 0.5 || X - U V ||_Fro^2 + alpha * || U ||_1,1 (U,V) with || V_k ||_2 <= 1 for all 0 <= k < n_components
||.||_Fro 代表 Frobenius 範數,||.||_1,1 代表entry-wise 矩陣範數,它是矩陣中所有條目的絕對值之和。
在用戶指南中閱讀更多信息。
- n_components:整數,默認=無
要提取的字典元素的數量。
- alpha:浮點數,默認=1
稀疏性控製參數。
- n_iter:整數,默認=1000
要執行的迭代總數。
- fit_algorithm:{‘lars’, ‘cd’},默認='lars'
使用的算法:
'lars'
:使用最小角度回歸方法解決套索問題(linear_model.lars_path
)'cd'
:使用坐標下降法計算 Lasso 解(linear_model.Lasso
)。如果估計的組件稀疏,Lars 會更快。
- n_jobs:整數,默認=無
要運行的並行作業數。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關詳細信息,請參閱詞匯表。- batch_size:整數,默認=3
每個小批量中的樣本數。
- shuffle:布爾,默認=真
是否在形成批次之前對樣本進行洗牌。
- dict_init:ndarray 形狀(n_components,n_features),默認=None
熱重啟方案的字典初始值。
- transform_algorithm:{‘lasso_lars’, ‘lasso_cd’,‘lars’, ‘omp’,‘threshold’},默認='omp'
用於轉換數據的算法:
'lars'
:使用最小角度回歸法(linear_model.lars_path
);'lasso_lars'
:使用 Lars 計算 Lasso 解決方案。'lasso_cd'
:使用坐標下降法計算 Lasso 解(linear_model.Lasso
)。如果估計的組件稀疏,'lasso_lars'
會更快。'omp'
:使用正交匹配追蹤來估計稀疏解。'threshold'
:將投影dictionary * X'
中小於 alpha 的所有係數壓縮為零。
- transform_n_nonzero_coefs:整數,默認=無
解的每列中要定位的非零係數的數量。這僅由
algorithm='lars'
和algorithm='omp'
使用。如果None
,那麽transform_n_nonzero_coefs=int(n_features / 10)
。- transform_alpha:浮點數,默認=無
如果
algorithm='lasso_lars'
或algorithm='lasso_cd'
,則alpha
是應用於 L1 範數的懲罰。如果algorithm='threshold'
、alpha
是閾值的絕對值,低於該值係數將被壓縮為零。如果None
,則默認為alpha
。- verbose:布爾,默認=假
控製過程的詳細程度。
- split_sign:布爾,默認=假
是否將稀疏特征向量拆分為其負部分和正部分的串聯。這可以提高下遊分類器的性能。
- random_state:int、RandomState 實例或無,默認=無
用於在未指定
dict_init
時初始化字典,在shuffle
設置為True
時隨機打亂數據,以及更新字典。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。- positive_code:布爾,默認=假
查找代碼時是否強製執行積極性。
- positive_dict:布爾,默認=假
查找字典時是否強製執行積極性。
- transform_max_iter:整數,默認=1000
algorithm='lasso_cd'
或'lasso_lars'
時要執行的最大迭代次數。
- components_:ndarray 形狀(n_components,n_features)
從數據中提取的組件。
- inner_stats_:(A, B) ndarrays 的元組
算法保留的內部足夠的統計信息。保留它們在在線設置中很有用,以避免丟失進化的曆史,但它們對最終用戶沒有任何用處。
A
(n_components, n_components)
是字典協方差矩陣。B
(n_features, n_components)
是數據近似矩陣。- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。- n_iter_:int
運行的迭代次數。
- iter_offset_:int
之前對數據批次執行的迭代次數。
- random_state_:RandomState 實例
RandomState 實例由種子、隨機數生成器或
np.random
生成。
參數:
屬性:
參考:
J. Mairal、F. Bach、J. Ponce、G. Sapiro,2009:稀疏編碼的在線字典學習 (https://www.di.ens.fr/sierra/pdfs/icml09.pdf)
例子:
>>> import numpy as np >>> from sklearn.datasets import make_sparse_coded_signal >>> from sklearn.decomposition import MiniBatchDictionaryLearning >>> X, dictionary, code = make_sparse_coded_signal( ... n_samples=100, n_components=15, n_features=20, n_nonzero_coefs=10, ... random_state=42) >>> dict_learner = MiniBatchDictionaryLearning( ... n_components=15, transform_algorithm='lasso_lars', random_state=42, ... ) >>> X_transformed = dict_learner.fit_transform(X)
我們可以檢查
X_transformed
的稀疏程度:>>> np.mean(X_transformed == 0) 0.86...
我們可以比較稀疏編碼信號重構誤差的平均平方歐幾裏得範數與原始信號的平方歐幾裏得範數:
>>> X_hat = X_transformed @ dict_learner.components_ >>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1)) 0.07...
相關用法
- Python sklearn MiniBatchSparsePCA用法及代碼示例
- Python sklearn MiniBatchKMeans用法及代碼示例
- Python sklearn MinMaxScaler用法及代碼示例
- Python sklearn MinCovDet用法及代碼示例
- Python sklearn MissingIndicator用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn MultiTaskLasso用法及代碼示例
- Python sklearn MultiTaskLassoCV用法及代碼示例
- Python sklearn MultiTaskLasso.path用法及代碼示例
- Python sklearn MultiOutputClassifier用法及代碼示例
- Python sklearn MultiTaskElasticNet.path用法及代碼示例
- Python sklearn MultiTaskElasticNetCV.path用法及代碼示例
- Python sklearn MultiTaskElasticNetCV用法及代碼示例
- Python sklearn MLPRegressor用法及代碼示例
- Python sklearn MultiLabelBinarizer用法及代碼示例
- Python sklearn MultiOutputRegressor用法及代碼示例
- Python sklearn MultiTaskLassoCV.path用法及代碼示例
- Python sklearn Matern用法及代碼示例
- Python sklearn MaxAbsScaler用法及代碼示例
- Python sklearn MeanShift用法及代碼示例
- Python sklearn MultiTaskElasticNet用法及代碼示例
- Python sklearn MultinomialNB用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.MiniBatchDictionaryLearning。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。