code: def staged_predict(self, X):
          
          check_is_fitted(self, 'estimators_')
  
          # if dropout wasn't used during training, proceed as usual,
          # otherwise consider scaling factor of individual trees
          if not hasattr(self, "scale_"):
              for y in self._staged_decision_function(X):
                  yield self._scale_prediction(y.ravel())
          else:
              for y in self._dropout_staged_decision_function(X):
                  yield self._scale_prediction(y.ravel())
docs: Predict hazard at each stage for X.
  
          This method allows monitoring (i.e. determine error on testing set)
          after each stage.
  
          Parameters
          ----------
          X : array-like, shape = (n_samples, n_features)
              The input samples.
  
          Returns
          -------
          y : generator of array of shape = (n_samples,)
              The predicted value of the input samples.