三、字典学习

3.1 DictionaryLearning

  1. DictionaryLearning用于字典学习,其原型为:

    1. class sklearn.decomposition.DictionaryLearning(n_components=None, alpha=1,
    2. max_iter=1000, tol=1e-08, fit_algorithm='lars', transform_algorithm='omp',
    3. transform_n_nonzero_coefs=None, transform_alpha=None, n_jobs=1,
    4. code_init=None, dict_init=None, verbose=False, split_sign=False, random_state=None)
    • n_components:一个整数,指定了字典大小 三、字典学习 - 图1

    • alpha:一个浮点数,指定了三、字典学习 - 图2 正则化项的系数 三、字典学习 - 图3 ,它控制了稀疏性。

    • 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,指定随机数种子。

  2. 属性:

    • components_:一个数组,存放学到的字典。
    • error_:一个数组,存放每一轮迭代的误差。
    • n_iter_:一个整数,存放迭代的次数。
  3. 方法:

    • fit(X,y):学习字典。
    • transform(X):根据学到的字典进行编码。
    • fit_transform(X,y):学习字典并执行字典编码。

3.2 MiniBatchDictionaryLearning

  1. MiniBatchDictionaryLearning也是字典学习,它主要用于大规模数据。它每次训练一批样本,然后连续多次训练。

  2. MiniBatchDictionaryLearning 的原型为:

    1. class sklearn.decomposition.MiniBatchDictionaryLearning(n_components=None, alpha=1,
    2. n_iter=1000, fit_algorithm='lars', n_jobs=1, batch_size=3, shuffle=True,
    3. dict_init=None, transform_algorithm='omp', transform_n_nonzero_coefs=None,
    4. transform_alpha=None, verbose=False, split_sign=False, random_state=None)
    • n_iter:一个整数,指定了总的执行迭代的数量。
    • batch_size:一个整数,指定了每次训练时的样本数量。
    • shuffle:一个布尔值,指定在训练每一批样本之前,是否对该批次样本进行混洗。
    • 其它参数参考DictionaryLearning
  3. 属性:

    • components_:一个数组,存放学到的字典。
    • inner_stats_:数组的元组,存放算法的中间状态。
    • n_iter_:一个整数,存放迭代的次数。
  4. 方法:

    • fit(X,y):学习字典。
    • transform(X):根据学到的字典进行编码。
    • fit_transform(X,y):学习字典并执行字典编码。
    • partial_fit(X[, y, iter_offset]):只训练一个批次的样本。