def _create_new_model_with_extreme_raters_from_original_params(
    self, ratingFeaturesAndLabelsWithExtremeRatings: pd.DataFrame
  ):
    """Create a new instance of BiasedMatrixFactorization, initialized with the original
    model parameters, but with extreme raters added to the raterIdMap and raterParams
    """
    newExtremeMF = self._mfRanker.get_new_mf_with_same_args()
    newExtremeMF.noteIdMap = self.noteIdMap
    newExtremeMF.raterIdMap = self.raterIdMapWithExtreme
    newExtremeMF.ratingFeaturesAndLabels = ratingFeaturesAndLabelsWithExtremeRatings

    newExtremeMF._create_mf_model(
      self.noteParams.copy(deep=True), self.raterParamsWithExtreme.copy(deep=True), self.globalBias
    )
    newExtremeMF.mf_model.freeze_rater_and_global_parameters()

    newExtremeMF.optimizer = torch.optim.Adam(
      list(newExtremeMF.mf_model.note_intercepts.parameters())
      + list(newExtremeMF.mf_model.note_factors.parameters()),
      lr=newExtremeMF._initLearningRate,
    )

    if self._checkParamsSame:
      self._check_note_parameters_same(newExtremeMF)
      self._check_rater_parameters_same(newExtremeMF)

    return newExtremeMF
Create a new instance of BiasedMatrixFactorization, initialized with the original
    model parameters, but with extreme raters added to the raterIdMap and raterParams
    
sourcecode/scoring/matrix_factorization/pseudo_raters.py