code: def _fit(self, X, Y):
      n_samples, n_features = X.shape
      n_vectors = Y.shape[1]
  
      ds = get_dataset(X, order="c")
      self.coef_ = np.zeros((n_vectors, n_features), dtype=np.float64)
      self.dual_coef_ = np.zeros(
          (n_vectors, n_samples), dtype=np.float64
      )
  
      alpha1 = self.l1_ratio * self.alpha
      alpha2 = (1 - self.l1_ratio) * self.alpha
  
      if self.loss == "squared_hinge":
          # For consistency with the rest of lightning.
          alpha1 *= 0.5
          alpha2 *= 0.5
  
      tol = self.tol
      n_calls = n_samples if self.n_calls is None else self.n_calls
      rng = check_random_state(self.random_state)
      loss = self._get_loss()
  
      for i in range(n_vectors):
          y = Y[:, i]
  
          if self.l1_ratio == 1.0:
              # Prox-SDCA needs a strongly convex regularizer so adds some
              # L2 penalty (see paper).
              alpha2 = self._get_alpha2_lasso(y, alpha1)
              tol = self.tol * 0.5
  
          _prox_sdca_fit(
              self,
              ds,
              y,
              self.coef_[i],
              self.dual_coef_[i],
              alpha1,
              alpha2,
              loss,
              self.gamma,
              self.max_iter,
              tol,
              self.callback,
              n_calls,
              self.verbose,
              rng,
          )
  
      return self
  
imports: import numpy
  from sklearn.utils import check_random_state
  from .base import BaseClassifier, BaseRegressor
  from .dataset_fast import get_dataset
  from .sdca_fast import _prox_sdca_fit
label_desc: Use image node_id 2 for calling the _BaseSDCA obj's underlying member method code with example usage: obj._fit(X, Y) and returns: self