class_docstr: Social recommendation using Probabilistic Matrix Factorization.
  
  Parameters
  ----------
  k: int, optional, default: 5
      The dimension of the latent factors.
  
  max_iter: int, optional, default: 100
      Maximum number of iterations or the number of epochs for SGD.
  
  learning_rate: float, optional, default: 0.001
      The learning rate for SGD_RMSProp.
  
  gamma: float, optional, default: 0.9
      The weight for previous/current gradient in RMSProp.
  
  lambda_c: float, optional, default: 10
      The parameter balancing the information from the user-item rating matrix and the user social network.
  
  lambda_reg: float, optional, default: 0.001
      The regularization parameter.
      
  weight_link: boolean, optional, default: True
      When true the social network links are weighted according to eq. (4) in the original paper.
  
  name: string, optional, default: 'SoRec'
      The name of the recommender model.
  
  trainable: boolean, optional, default: True
      When False, the model is not trained and Cornac assumes that the model already
      pre-trained (U, V and Z are not None).
  
  verbose: boolean, optional, default: False
      When True, some running logs are displayed.
  
  init_params: dictionary, optional, default: None
      List of initial parameters, e.g., init_params = {'U':U, 'V':V, 'Z':Z}.
  
      U: a ndarray of shape (n_users, k)
          Containing the user latent factors.
          
      V: a ndarray of shape (n_items, k)
          Containing the item latent factors.
          
      Z: a ndarray of shape (n_users, k)
          Containing the social network latent factors.
  
  seed: int, optional, default: None
      Random seed for parameters initialization.
  
  References
  ----------
  * H. Ma, H. Yang, M. R. Lyu, and I. King. SoRec:Social recommendation using probabilistic matrix factorization.      CIKM ’08, pages 931–940, Napa Valley, USA, 2008.
code: def __init__(
      self,
      name="SoRec",
      k=5,
      max_iter=100,
      learning_rate=0.001,
      lambda_c=10,
      lambda_reg=0.001,
      gamma=0.9,
      weight_link=True,
      trainable=True,
      verbose=False,
      init_params=None,
      seed=None,
  ):
      Recommender.__init__(
          self, name=name, trainable=trainable, verbose=verbose
      )
      self.k = k
      self.max_iter = max_iter
      self.learning_rate = learning_rate
      self.lambda_c = lambda_c
      self.lambda_reg = lambda_reg
      self.gamma = gamma
      self.weight_link = weight_link
  
      self.ll = np.full(max_iter, 0)
      self.eps = 0.000000001
      self.seed = seed
  
      # Init params if provided
      self.init_params = {} if init_params is None else init_params
      self.U = self.init_params.get("U", None)  # matrix of user factors
      self.V = self.init_params.get("V", None)  # matrix of item factors
      self.Z = self.init_params.get(
          "Z", None
      )  # matrix of social network factors
  
      if self.U is not None and self.U.shape[1] != self.k:
          raise ValueError("initial parameters U dimension error")
  
      if self.V is not None and self.V.shape[1] != self.k:
          raise ValueError("initial parameters V dimension error")
  
      if self.Z is not None and self.Z.shape[1] != self.k:
          raise ValueError("initial parameters Z dimension error")
  
file_path: cornac/cornac/models/sorec/recom_sorec.py
imports: import numpy
  import scipy
  from ..recommender import Recommender
  from ..recommender import ANNMixin, MEASURE_DOT
  from ...utils.common import sigmoid
  from ...utils.common import scale
  from ...exception import ScoreException
label_desc: Use image node_id 1 to create a new SoRec object from inherited base classes: Recommender, ANNMixin with example: obj = SoRec(name, k, max_iter, learning_rate, lambda_c, lambda_reg, gamma, weight_link, trainable, verbose, init_params, seed)