class_docstr: Bootstrap generator, an iterable object.
  
  The generator for bootstrap samples. Iterating along the object will
  give the bootstrap sample indices.
  
  Attributes
  ----------
  sample_size : `int`
      The sample size of data.
  bootstrap_size : `int`
      The bootstrap sample size to be randomly drawn.
  num_bootstrap : `int`
      The number of bootstrap samples to be drawn.
  sample_num : `int`
      The index of number of samples generated.
class_docstr_tok: ["Bootstrap","generator",",","an","iterable","object",".","The","generator","for","bootstrap","samples",".","Iterating","along","the","object","will","give","the","bootstrap","sample","indices",".","Attributes","--","--","--","--","--","sample_size",":","`","int","`","The","sample","size","of","data",".","bootstrap_size",":","`","int","`","The","bootstrap","sample","size","to","be","randomly","drawn",".","num_bootstrap",":","`","int","`","The","number","of","bootstrap","samples","to","be","drawn",".","sample_num",":","`","int","`","The","index","of","number","of","samples","generated","."]
code: def next(self):
      if self.sample_num < self.num_bootstrap:
          sample_index = np.random.choice(
              a=self.sample_size, size=self.bootstrap_size, replace=True
          )
          self.sample_num += 1
          return sample_index
      else:
          raise StopIteration
  
imports: import numpy
  import pandas
  import statsmodels
  import statsmodels.api
  from scipy.stats import f
  from scipy.stats import norm
  from scipy.stats import t
  from sklearn.base import clone
  from sklearn.linear_model import Ridge
  from sklearn.model_selection import train_test_split
  from greykite.algo.common.col_name_utils import INTERCEPT
  from greykite.algo.common.col_name_utils import simplify_pred_cols
label_desc: Use image node_id 4 for calling the Bootstrapper obj's underlying member method code with example usage: obj.next() and returns: sample_index