docs: def fit(self, X, y=None):
          """
          Fits the learning curve with the wrapped model to the specified data.
          Draws training and test score curves and saves the scores to the
          estimator.
  
          Parameters
          ----------
          X : array-like, shape (n_samples, n_features)
              Training vector, where n_samples is the number of samples and
              n_features is the number of features.
  
          y : array-like, shape (n_samples) or (n_samples, n_features), optional
              Target relative to X for classification or regression;
              None for unsupervised learning.
  
          Returns
          -------
          self : instance
              Returns the instance of the learning curve visualizer for use in
              pipelines and other sequential transformers.
          """
          # arguments to pass to sk_learning_curve
          sklc_kwargs = {
              key: self.get_params()[key]
              for key in (
                  'groups', 'train_sizes', 'cv', 'scoring',
                  'exploit_incremental_learning', 'n_jobs',
                  'pre_dispatch', 'shuffle', 'random_state',
              )
          }
  
          # compute the learning curve and store the scores on the estimator
          curve = sk_learning_curve(self.estimator, X, y, **sklc_kwargs)
          self.train_sizes_, self.train_scores_, self.test_scores_ = curve
  
          # compute the mean and standard deviation of the training data
          self.train_scores_mean_ = np.mean(self.train_scores_, axis=1)
          self.train_scores_std_ = np.std(self.train_scores_, axis=1)
  
          # compute the mean and standard deviation of the test data
          self.test_scores_mean_ = np.mean(self.test_scores_, axis=1)
          self.test_scores_std_ = np.std(self.test_scores_, axis=1)
  
          # draw the curves on the current axes
          self.draw()
          return self