class_docstr: Ensemble forecasts with Non-negative least squares based weighting.
  
  Ensemble class that performs a non-negative least squares to fit to the
  estimators. Keeps track of all observations seen so far and fits to it.
  
  Parameters
  ----------
  n_estimators: int
      number of estimators
  loss_func : function
      loss function which follows sklearn.metrics API, for updating weights
class_docstr_tok: ["Ensemble","forecasts","with","Non-negative","least","squares","based","weighting",".","Ensemble","class","that","performs","a","non-negative","least","squares","to","fit","to","the","estimators",".","Keeps","track","of","all","observations","seen","so","far","and","fits","to","it",".","Parameters","--","--","--","--","--","n_estimators",":","int","number","of","estimators","loss_func",":","function","loss","function","which","follows","sklearn.metrics","API",",","for","updating","weights"]
code: def __init__(self, n_estimators=10, loss_func=None):
      super().__init__(n_estimators=n_estimators, loss_func=loss_func)
      self.total_y_pred = np.empty((n_estimators, 0))
      self.total_y_true = np.empty(0)
  
imports: import numpy
  from scipy.optimize import bisect, nnls
label_desc: Use image node_id 1 to create a new NNLSEnsemble object from inherited base classes: _PredictionWeightedEnsembler with example: obj = NNLSEnsemble(n_estimators, loss_func)