code: def _check_params(self):
          
          self.n_estimators = int(self.n_estimators)
          if self.n_estimators <= 0:
              raise ValueError("n_estimators must be greater than 0 but "
                               "was %r" % self.n_estimators)
  
          if not 0.0 < self.learning_rate <= 1.0:
              raise ValueError("learning_rate must be within ]0; 1] but "
                               "was %r" % self.learning_rate)
  
          if not 0.0 < self.subsample <= 1.0:
              raise ValueError("subsample must be in ]0; 1] but "
                               "was %r" % self.subsample)
  
          if not 0.0 <= self.dropout_rate < 1.0:
              raise ValueError("dropout_rate must be within [0; 1[, but "
                               "was %r" % self.dropout_rate)
  
          max_features = self._check_max_features()
  
          self.min_samples_split = int(self.min_samples_split)
          self.min_samples_leaf = int(self.min_samples_leaf)
          self.max_depth = int(self.max_depth)
          if self.max_leaf_nodes:
              self.max_leaf_nodes = int(self.max_leaf_nodes)
  
          self.max_features_ = max_features
  
          allowed_presort = ('auto', True, False)
          if self.presort not in allowed_presort:
              raise ValueError("'presort' should be in {}. Got {!r} instead."
                               .format(allowed_presort, self.presort))
  
          if self.loss not in LOSS_FUNCTIONS:
              raise ValueError("Loss '{0:s}' not supported. ".format(self.loss))
docs: Check validity of parameters and raise ValueError if not valid.