code: def test_l1l2_multiclass_log_loss(data, request):
      X, y = request.getfixturevalue(data)
      clf = CDClassifier(
          penalty="l1/l2",
          loss="log",
          multiclass=True,
          max_steps=30,
          max_iter=5,
          C=1.0,
          random_state=0,
      )
      clf.fit(X, y)
      np.testing.assert_almost_equal(clf.score(X, y), 0.8766, 3)
      df = clf.decision_function(X)
      sel = np.array([df[i, int(y[i])] for i in range(df.shape[0])])
      df -= sel[:, np.newaxis]
      df = np.exp(df)
      np.testing.assert_array_almost_equal(clf.errors_, df.T)
      for i in range(X.shape[0]):
          np.testing.assert_almost_equal(clf.errors_[y[i], i], 1.0)
      nz = np.sum(clf.coef_ != 0)
      assert nz == 297
  
      clf = CDClassifier(
          penalty="l1/l2",
          loss="log",
          multiclass=True,
          max_steps=30,
          max_iter=5,
          C=0.3,
          random_state=0,
      )
      clf.fit(X, y)
      np.testing.assert_almost_equal(clf.score(X, y), 0.8566, 3)
      nz = np.sum(clf.coef_ != 0)
      assert nz == 213
      assert nz % 3 == 0
  
imports: import numpy
  import pytest
  from sklearn.datasets import load_digits
  from sklearn.preprocessing import LabelBinarizer
  from lightning.impl.primal_cd import CDClassifier, CDRegressor
  from lightning.impl.tests.utils import check_predict_proba
label_desc: Use image node_id 21 for calling a global function with example usage: test_l1l2_multiclass_log_loss(data, request) without return types