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