docstr: Train a matrix factorization model to predict empty
  entries in a matrix. Mostly copied (with permission) from:
  https://blog.insightdatascience.com/explicit-matrix-factorization-als-sgd-and-all-that-jazz-b00e4d9b21ea
  
  Params
  =====+
  rank : (int)
      Number of latent factors to use in matrix
      factorization model
  
  learning_rate : (float)
      Learning rate for optimizer
  
  max_iters : (int)
      Number of max_iters to train for
  
  shrinkage_value : (float)
      Regularization term for sgd penalty
  
  min_value : float
      Smallest possible imputed value
  
  max_value : float
      Largest possible imputed value
  
  verbose : (bool)
      Whether or not to printout training progress
docstr_tok: ["Train","a","matrix","factorization","model","to","predict","empty","entries","in","a","matrix",".","Mostly","copied","(","with","permission",")","from",":","https",":","\/\/blog.insightdatascience.com\/explicit-matrix-factorization-als-sgd-and-all-that-jazz-b00e4d9b21ea","Params","=====+","rank",":","(","int",")","Number","of","latent","factors","to","use","in","matrix","factorization","model","learning_rate",":","(","float",")","Learning","rate","for","optimizer","max_iters",":","(","int",")","Number","of","max_iters","to","train","for","shrinkage_value",":","(","float",")","Regularization","term","for","sgd","penalty","min_value",":","float","Smallest","possible","imputed","value","max_value",":","float","Largest","possible","imputed","value","verbose",":","(","bool",")","Whether","or","not","to","printout","training","progress"]
code: def __init__(
      self,
      rank=40,
      learning_rate=0.01,
      max_iters=50,
      shrinkage_value=0,
      min_value=None,
      max_value=None,
      verbose=True,
  ):
      """
      Train a matrix factorization model to predict empty
      entries in a matrix. Mostly copied (with permission) from:
      https://blog.insightdatascience.com/explicit-matrix-factorization-als-sgd-and-all-that-jazz-b00e4d9b21ea
  
      Params
      =====+
      rank : (int)
          Number of latent factors to use in matrix
          factorization model
  
      learning_rate : (float)
          Learning rate for optimizer
  
      max_iters : (int)
          Number of max_iters to train for
  
      shrinkage_value : (float)
          Regularization term for sgd penalty
  
      min_value : float
          Smallest possible imputed value
  
      max_value : float
          Largest possible imputed value
  
      verbose : (bool)
          Whether or not to printout training progress
      """
      Solver.__init__(self, min_value=min_value, max_value=max_value)
      self.rank = rank
      self.learning_rate = learning_rate
      self.max_iters = max_iters
      self.shrinkage_value = shrinkage_value
      self._v = verbose
  
file_path: fancyimpute/fancyimpute/matrix_factorization.py
imports: import numpy
  from sklearn.utils import check_array
  from .solver import Solver
  from .common import masked_mae
label_desc: Use image node_id 1 to create a new MatrixFactorization object from inherited base classes: Solver with example: obj = MatrixFactorization(rank, learning_rate, max_iters, shrinkage_value, min_value, max_value, verbose)