class_docstr: Dictionary learning
  
  Finds a dictionary (a set of atoms) that can best be used to represent data
  using a sparse code.
  
  Solves the optimization problem::
  
      (U^*,V^*) = argmin 0.5 || Y - U V ||_2^2 + alpha * || U ||_1
                  (U,V)
                  with || V_k ||_2 = 1 for all  0 <= k < n_components
  
  Read more in the :ref:`User Guide <DictionaryLearning>`.
  
  Parameters
  ----------
  n_components : int,
      number of dictionary elements to extract
  
  alpha : float,
      sparsity controlling parameter
  
  max_iter : int,
      maximum number of iterations to perform
  
  tol : float,
      tolerance for numerical error
  
  fit_algorithm : {'lars', 'cd'}
      lars: uses the least angle regression method to solve the lasso problem
      (linear_model.lars_path)
      cd: uses the coordinate descent method to compute the
      Lasso solution (linear_model.Lasso). Lars will be faster if
      the estimated components are sparse.
  
      .. versionadded:: 0.17
         *cd* coordinate descent method to improve speed.
  
  transform_algorithm : {'lasso_lars', 'lasso_cd', 'lars', 'omp',     'threshold'}
      Algorithm used to transform the data
      lars: uses the least angle regression method (linear_model.lars_path)
      lasso_lars: uses Lars to compute the Lasso solution
      lasso_cd: uses the coordinate descent method to compute the
      Lasso solution (linear_model.Lasso). lasso_lars will be faster if
      the estimated components are sparse.
      omp: uses orthogonal matching pursuit to estimate the sparse solution
      threshold: squashes to zero all coefficients less than alpha from
      the projection ``dictionary * X'``
  
      .. versionadded:: 0.17
         *lasso_cd* coordinate descent method to improve speed.
  
  transform_n_nonzero_coefs : int, ``0.1 * n_features`` by default
      Number of nonzero coefficients to target in each column of the
      solution. This is only used by `algorithm='lars'` and `algorithm='omp'`
      and is overridden by `alpha` in the `omp` case.
  
  transform_alpha : float, 1. by default
      If `algorithm='lasso_lars'` or `algorithm='lasso_cd'`, `alpha` is the
      penalty applied to the L1 norm.
      If `algorithm='threshold'`, `alpha` is the absolute value of the
      threshold below which coefficients will be squashed to zero.
      If `algorithm='omp'`, `alpha` is the tolerance parameter: the value of
      the reconstruction error targeted. In this case, it overrides
      `n_nonzero_coefs`.
  
  split_sign : bool, False by default
      Whether to split the sparse feature vector into the concatenation of
      its negative part and its positive part. This can improve the
      performance of downstream classifiers.
  
  n_jobs : int,
      number of parallel jobs to run
  
  code_init : array of shape (n_samples, n_components),
      initial value for the code, for warm restart
  
  dict_init : array of shape (n_components, n_features),
      initial values for the dictionary, for warm restart
  
  verbose :
      degree of verbosity of the printed output
  
  random_state : int or RandomState
      Pseudo number generator state used for random sampling.
  
  Attributes
  ----------
  components_ : array, [n_components, n_features]
      dictionary atoms extracted from the data
  
  error_ : array
      vector of errors at each iteration
  
  n_iter_ : int
      Number of iterations run.
  
  Notes
  -----
  **References:**
  
  J. Mairal, F. Bach, J. Ponce, G. Sapiro, 2009: Online dictionary learning
  for sparse coding (http://www.di.ens.fr/sierra/pdfs/icml09.pdf)
  
  See also
  --------
  SparseCoder
  MiniBatchDictionaryLearning
  SparsePCA
  MiniBatchSparsePCA
class_docstr_tok: ["Dictionary","learning","Finds","a","dictionary","(","a","set","of","atoms",")","that","can","best","be","used","to","represent","data","using","a","sparse","code",".","Solves","the","optimization","problem",":",":","(","U^","*",",","V^","*",")","=","argmin","0.5","||","Y","-","U","V","||_2^2","+","alpha","*","||","U","||_1","(","U",",","V",")","with","||","V_k","||_2","=","1","for","all","0","<","=","k","<","n_components","Read","more","in","the",":","ref",":","`","User","Guide","<","DictionaryLearning",">","`",".","Parameters","--","--","--","--","--","n_components",":","int",",","number","of","dictionary","elements","to","extract","alpha",":","float",",","sparsity","controlling","parameter","max_iter",":","int",",","maximum","number","of","iterations","to","perform","tol",":","float",",","tolerance","for","numerical","error","fit_algorithm",":","{","'lars","'",",","'cd","'","}","lars",":","uses","the","least","angle","regression","method","to","solve","the","lasso","problem","(","linear_model.lars_path",")","cd",":","uses","the","coordinate","descent","method","to","compute","the","Lasso","solution","(","linear_model.Lasso",")",".","Lars","will","be","faster","if","the","estimated","components","are","sparse",".","..","versionadded",":",":","0.17","*","cd","*","coordinate","descent","method","to","improve","speed",".","transform_algorithm",":","{","'lasso_lars","'",",","'lasso_cd","'",",","'lars","'",",","'omp","'",",","'threshold","'","}","Algorithm","used","to","transform","the","data","lars",":","uses","the","least","angle","regression","method","(","linear_model.lars_path",")","lasso_lars",":","uses","Lars","to","compute","the","Lasso","solution","lasso_cd",":","uses","the","coordinate","descent","method","to","compute","the","Lasso","solution","(","linear_model.Lasso",")",".","lasso_lars","will","be","faster","if","the","estimated","components","are","sparse",".","omp",":","uses","orthogonal","matching","pursuit","to","estimate","the","sparse","solution","threshold",":","squashes","to","zero","all","coefficients","less","than","alpha","from","the","projection","``","dictionary","*","X","'","``","..","versionadded",":",":","0.17","*","lasso_cd","*","coordinate","descent","method","to","improve","speed",".","transform_n_nonzero_coefs",":","int",",","``","0.1","*","n_features","``","by","default","Number","of","nonzero","coefficients","to","target","in","each","column","of","the","solution",".","This","is","only","used","by","`","algorithm='lars","'","`","and","`","algorithm='omp","'","`","and","is","overridden","by","`","alpha","`","in","the","`","omp","`","case",".","transform_alpha",":","float",",","1.","by","default","If","`","algorithm='lasso_lars","'","`","or","`","algorithm='lasso_cd","'","`",",","`","alpha","`","is","the","penalty","applied","to","the","L1","norm",".","If","`","algorithm='threshold","'","`",",","`","alpha","`","is","the","absolute","value","of","the","threshold","below","which","coefficients","will","be","squashed","to","zero",".","If","`","algorithm='omp","'","`",",","`","alpha","`","is","the","tolerance","parameter",":","the","value","of","the","reconstruction","error","targeted",".","In","this","case",",","it","overrides","`","n_nonzero_coefs","`",".","split_sign",":","bool",",","False","by","default","Whether","to","split","the","sparse","feature","vector","into","the","concatenation","of","its","negative","part","and","its","positive","part",".","This","can","improve","the","performance","of","downstream","classifiers",".","n_jobs",":","int",",","number","of","parallel","jobs","to","run","code_init",":","array","of","shape","(","n_samples",",","n_components",")",",","initial","value","for","the","code",",","for","warm","restart","dict_init",":","array","of","shape","(","n_components",",","n_features",")",",","initial","values","for","the","dictionary",",","for","warm","restart","verbose",":","degree","of","verbosity","of","the","printed","output","random_state",":","int","or","RandomState","Pseudo","number","generator","state","used","for","random","sampling",".","Attributes","--","--","--","--","--","components_",":","array",",","[","n_components",",","n_features","]","dictionary","atoms","extracted","from","the","data","error_",":","array","vector","of","errors","at","each","iteration","n_iter_",":","int","Number","of","iterations","run",".","Notes","--","--","-","*","*","References",":","*","*","J.","Mairal",",","F.","Bach",",","J.","Ponce",",","G.","Sapiro",",","2009",":","Online","dictionary","learning","for","sparse","coding","(","http",":","\/\/www.di.ens.fr\/sierra\/pdfs\/icml09.pdf",")","See","also","--","--","--","--","SparseCoder","MiniBatchDictionaryLearning","SparsePCA","MiniBatchSparsePCA"]
docstr: Fit the model from data in X.
  
  Parameters
  ----------
  X: array-like, shape (n_samples, n_features)
      Training vector, where n_samples in the number of samples
      and n_features is the number of features.
  
  Returns
  -------
  self: object
      Returns the object itself
docstr_tok: ["Fit","the","model","from","data","in","X.","Parameters","--","--","--","--","--","X",":","array-like",",","shape","(","n_samples",",","n_features",")","Training","vector",",","where","n_samples","in","the","number","of","samples","and","n_features","is","the","number","of","features",".","Returns","--","--","--","-","self",":","object","Returns","the","object","itself"]
code: def fit(self, X, y=None):
      """Fit the model from data in X.
  
      Parameters
      ----------
      X: array-like, shape (n_samples, n_features)
          Training vector, where n_samples in the number of samples
          and n_features is the number of features.
  
      Returns
      -------
      self: object
          Returns the object itself
      """
      random_state = check_random_state(self.random_state)
      X = check_array(X)
      if self.n_components is None:
          n_components = X.shape[1]
      else:
          n_components = self.n_components
  
      V, U, E, self.n_iter_ = dict_learning(
          X,
          n_components,
          self.alpha,
          tol=self.tol,
          max_iter=self.max_iter,
          method=self.fit_algorithm,
          n_jobs=self.n_jobs,
          code_init=self.code_init,
          dict_init=self.dict_init,
          verbose=self.verbose,
          random_state=random_state,
          return_n_iter=True,
      )
      self.components_ = U
      self.error_ = E
      return self
  
imports: from __future__ import print_function
  import time
  import sys
  import itertools
  from math import sqrt, ceil
  import numpy
  from scipy import linalg
  from numpy.lib.stride_tricks import as_strided
  from ..base import BaseEstimator, TransformerMixin
  from ..externals.joblib import Parallel, delayed, cpu_count
  from ..externals.six.moves import zip
  from ..utils import check_array, check_random_state, gen_even_slices, gen_batches, _get_n_jobs
  from ..utils.extmath import randomized_svd, row_norms
  from ..utils.validation import check_is_fitted
  from ..linear_model import Lasso, orthogonal_mp_gram, LassoLars, Lars
label_desc: Use image node_id 2 for calling the DictionaryLearning obj's underlying member method code with example usage: obj.fit(X, y) and returns: self