class_docstr: RMSProp optimizer.
  
  Parameters
  ----------
  lr
  rho
  eps
  
  Examples
  --------
  
  >>> from river import datasets
  >>> from river import evaluate
  >>> from river import linear_model
  >>> from river import metrics
  >>> from river import optim
  >>> from river import preprocessing
  
  >>> dataset = datasets.Phishing()
  >>> optimizer = optim.RMSProp()
  >>> model = (
  ...     preprocessing.StandardScaler() |
  ...     linear_model.LogisticRegression(optimizer)
  ... )
  >>> metric = metrics.F1()
  
  >>> evaluate.progressive_val_score(dataset, model, metric)
  F1: 87.24%
  
  References
  ----------
  [^1]: [Divide the gradient by a running average of itsrecent magnitude](https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf)
code: def _step_with_dict(self, w, g):
      if self.g2 is None:
          self.g2 = collections.defaultdict(float)
  
      for i, gi in g.items():
          self.g2[i] = self.rho * self.g2[i] + (1 - self.rho) * gi**2
          w[i] -= (
              self.learning_rate / (self.g2[i] + self.eps) ** 0.5 * gi
          )
  
      return w
  
file_path: river/river/optim/rms_prop.py
imports: from __future__ import annotations
  import collections
  import numpy
  from river import optim, utils
label_desc: Use image node_id 2 for calling the RMSProp obj's underlying member method code with example usage: obj._step_with_dict(w, g) and returns: w