docs: def partial_fit(self, X, y=None):
          """
          Performs online computation of mean and standard deviation on X for later scaling.
          All of X is processed as a single batch.
          This is intended for cases when `fit` is
          not feasible due to very large number of `n_samples`
          or because X is read from a continuous stream.
  
          The algorithm for incremental mean
          and std is given in Equation 1.5a,b in Chan, Tony F., Gene H. Golub, and Randall J. LeVeque. "Algorithms
          for computing the sample variance: Analysis and recommendations."
          The American Statistician 37.3 (1983): 242-247
  
          :param X: Data matrix to scale.
          :type X: numpy.ndarray, shape [n_samples, n_features]
          :param y: Passthrough for Scikit-learn ``Pipeline`` compatibility.
          :type y: None
          :return: Fitted object.
          :rtype: pyChemometrics.ChemometricsScaler
  
          """
  
          X = check_array(X, accept_sparse=('csr', 'csc'), copy=self.copy,
                          warn_on_dtype=True, estimator=self, dtype=FLOAT_DTYPES)
  
          # Even in the case of `with_mean=False`, we update the mean anyway
          # This is needed for the incremental computation of the var
          # See incr_mean_variance_axis and _incremental_mean_variance_axis
  
          if sparse.issparse(X):
              if self.with_mean:
                  raise ValueError(
                      "Cannot center sparse matrices: pass `with_mean=False` "
                      "instead. See docstring for motivation and alternatives.")
              if self.with_std:
                  # First pass
                  if not hasattr(self, 'n_samples_seen_'):
                      self.mean_, self.var_ = mean_variance_axis(X, axis=0)
                      self.n_samples_seen_ = X.shape[0]
                  # Next passes
                  else:
                      self.mean_, self.var_, self.n_samples_seen_ = \
                          incr_mean_variance_axis(X, axis=0,
                                                  last_mean=self.mean_,
                                                  last_var=self.var_,
                                                  last_n=self.n_samples_seen_)
              else:
                  self.mean_ = None
                  self.var_ = None
          else:
              # First pass
              if not hasattr(self, 'n_samples_seen_'):
                  self.mean_ = .0
                  self.n_samples_seen_ = 0
                  if self.with_std:
                      self.var_ = .0
                  else:
                      self.var_ = None
  
              self.mean_, self.var_, self.n_samples_seen_ = \
                  _incremental_mean_and_var(X, self.mean_, self.var_,
                                            self.n_samples_seen_)
  
          if self.with_std:
              self.scale_ = _handle_zeros_in_scale(numpy.sqrt(self.var_)) ** self.scale_power
          else:
              self.scale_ = None
  
          return self