class_docstr: Multi-layer Perceptron.
  
  The `_forward` method propagates input forward through the network and stores the outputs
  of each layer along the way. The `_backward` method then goes through each layer in reverse
  order and updates the weights within each layer.
docstr: Make predictions.
  
  Parameters
  ----------
  X
      A DataFrame of shape (batch_size, n_features).
docstr_tok: ["Make","predictions",".","Parameters","--","--","--","--","--","X","A","DataFrame","of","shape","(","batch_size",",","n_features",")","."]
code: def __call__(self, X: pd.DataFrame):
      """Make predictions.
  
      Parameters
      ----------
      X
          A DataFrame of shape (batch_size, n_features).
  
      """
      _, a = self._forward(X)
      y_pred = a[self.n_layers]
      return pd.DataFrame(y_pred, columns=self.targets, index=X.index)
  
imports: from __future__ import annotations
  import collections
  import copy
  import functools
  import numpy
  import pandas
  from river import base, optim
label_desc: Use image node_id 6 for calling the MLP obj's underlying member method code with example usage: obj.__call__(X) and returns: pd