本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。