本文簡要介紹python語言中 sklearn.decomposition.DictionaryLearning
的用法。
用法:
class sklearn.decomposition.DictionaryLearning(n_components=None, *, alpha=1, max_iter=1000, tol=1e-08, fit_algorithm='lars', transform_algorithm='omp', transform_n_nonzero_coefs=None, transform_alpha=None, n_jobs=None, code_init=None, dict_init=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:整數,默認=無
要提取的字典元素的數量。如果無,則
n_components
設置為n_features
。- alpha:浮點數,默認=1.0
稀疏性控製參數。
- max_iter:整數,默認=1000
要執行的最大迭代次數。
- tol:浮點數,默認=1e-8
數值誤差的容差。
- fit_algorithm:{‘lars’, ‘cd’},默認='lars'
- transform_algorithm:{‘lasso_lars’, ‘lasso_cd’,‘lars’, ‘omp’,‘threshold’},默認='omp'
用於轉換數據的算法:
- 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
。- n_jobs:int 或無,默認=無
要運行的並行作業數。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關詳細信息,請參閱詞匯表。- code_init:ndarray 形狀(n_samples,n_components),默認=None
代碼的初始值,用於熱重啟。僅在
code_init
和dict_init
不是 None 時使用。- dict_init:ndarray 形狀(n_components,n_features),默認=None
字典的初始值,用於熱重啟。僅在
code_init
和dict_init
不是 None 時使用。- 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)
從數據中提取的字典原子
- error_:數組
每次迭代的誤差向量
- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。- n_iter_:int
運行的迭代次數。
參數:
屬性:
參考:
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 DictionaryLearning >>> 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 = DictionaryLearning( ... 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.87...
我們可以比較稀疏編碼信號重構誤差的平均平方歐幾裏得範數與原始信號的平方歐幾裏得範數:
>>> X_hat = X_transformed @ dict_learner.components_ >>> np.mean(np.sum((X_hat - X) ** 2, axis=1) / np.sum(X ** 2, axis=1)) 0.08...
相關用法
- Python sklearn DictVectorizer用法及代碼示例
- Python sklearn DictVectorizer.restrict用法及代碼示例
- Python sklearn DistanceMetric用法及代碼示例
- Python sklearn DummyRegressor用法及代碼示例
- Python sklearn DummyClassifier用法及代碼示例
- Python sklearn DotProduct用法及代碼示例
- Python sklearn DecisionTreeClassifier用法及代碼示例
- Python sklearn DetCurveDisplay.from_predictions用法及代碼示例
- Python sklearn DBSCAN用法及代碼示例
- Python sklearn DetCurveDisplay.from_estimator用法及代碼示例
- Python sklearn DetCurveDisplay用法及代碼示例
- Python sklearn DecisionTreeRegressor用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.DictionaryLearning。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。