三、字典学习
3.1 DictionaryLearning
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=1,
code_init=None, dict_init=None, verbose=False, split_sign=False, random_state=None)
n_components
:一个整数,指定了字典大小 。alpha
:一个浮点数,指定了 正则化项的系数 ,它控制了稀疏性。max_iter
:一个整数,指定了最大迭代次数。tol
:一个浮点数,指定了收敛阈值。fit_algorithm
:一个字符串,指定了求解算法。可以为:'lars'
:使用least angle regression
算法来求解。'cd'
:使用coordinate descent
算法来求解。
transform_algorithm
:一个字符串,指定了数据转换的方法。可以为:'lasso_lars'
:使用Lars
算法来求解。'lasso_cd'
:使用coordinate descent
算法来求解。'lars'
:使用least angle regression
算法来求解。'omp'
:使用正交匹配的方法来求解。'threshold'
:通过字典转换后的坐标中,小于transform_alpha
的特征的值都设成零。
transform_n_nonzero_coefs
:一个整数,指定解中每一列中非零元素的个数,默认为0.1*n_features
。只用于
lars
算法和omp
算法(omp
算法中,可能被transform_alpha
参数覆盖)。transform_alpha
:一个浮点数,默认为 1.0 。- 如果算法为
lasso_lars
或者lasso_cd
,则该参数指定了L1
正则化项的系数。 - 如果算法为
threshold
,则该参数指定了特征为零的阈值。 - 如果算法为
omp
,则该参数指定了重构误差的阈值,此时它覆盖了transform_n_nonzero_coefs
参数。
- 如果算法为
split_sign
:一个布尔值,指定是否拆分系数特征向量为其正向值和负向值的拼接。n_jobs
:一个整数,指定并行性。code_init
:一个数组,指定了初始编码,它用于字典学习算法的热启动。dict_init
:一个数组,指定了初始字典,它用于字典学习算法的热启动。verbose
:一个整数,控制输出日志。random_state
:一个整数或者一个RandomState
实例,或者None
,指定随机数种子。
属性:
components_
:一个数组,存放学到的字典。error_
:一个数组,存放每一轮迭代的误差。n_iter_
:一个整数,存放迭代的次数。
方法:
fit(X,y)
:学习字典。transform(X)
:根据学到的字典进行编码。fit_transform(X,y)
:学习字典并执行字典编码。
3.2 MiniBatchDictionaryLearning
MiniBatchDictionaryLearning
也是字典学习,它主要用于大规模数据。它每次训练一批样本,然后连续多次训练。MiniBatchDictionaryLearning
的原型为:class sklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, alpha=1,
n_iter=1000, fit_algorithm='lars', n_jobs=1, 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)
n_iter
:一个整数,指定了总的执行迭代的数量。batch_size
:一个整数,指定了每次训练时的样本数量。shuffle
:一个布尔值,指定在训练每一批样本之前,是否对该批次样本进行混洗。- 其它参数参考
DictionaryLearning
。
属性:
components_
:一个数组,存放学到的字典。inner_stats_
:数组的元组,存放算法的中间状态。n_iter_
:一个整数,存放迭代的次数。
方法:
fit(X,y)
:学习字典。transform(X)
:根据学到的字典进行编码。fit_transform(X,y)
:学习字典并执行字典编码。partial_fit(X[, y, iter_offset])
:只训练一个批次的样本。