code: def test_8_scikitlearn(self):
      from sklearn.linear_model import LogisticRegression
      from sklearn.svm import SVC, LinearSVC
  
      from art.estimators.classification.scikitlearn import (
          SklearnClassifier,
      )
  
      scikitlearn_test_cases = [
          LogisticRegression(solver="lbfgs", multi_class="auto"),
          SVC(gamma="auto"),
          LinearSVC(),
      ]
  
      x_test_original = self.x_test_iris.copy()
  
      for model in scikitlearn_test_cases:
          classifier = SklearnClassifier(
              model=model, clip_values=(0, 1)
          )
          classifier.fit(x=self.x_test_iris, y=self.y_test_iris)
  
          # Test untargeted attack
          attack = BasicIterativeMethod(
              classifier,
              eps=1.0,
              eps_step=0.1,
              max_iter=5,
              verbose=False,
          )
          x_test_adv = attack.generate(self.x_test_iris)
          self.assertFalse((self.x_test_iris == x_test_adv).all())
          self.assertTrue((x_test_adv <= 1).all())
          self.assertTrue((x_test_adv >= 0).all())
  
          preds_adv = np.argmax(classifier.predict(x_test_adv), axis=1)
          self.assertFalse(
              (np.argmax(self.y_test_iris, axis=1) == preds_adv).all()
          )
          acc = (
              np.sum(preds_adv == np.argmax(self.y_test_iris, axis=1))
              / self.y_test_iris.shape[0]
          )
          logger.info(
              "Accuracy of "
              + classifier.__class__.__name__
              + " on Iris with BIM adversarial examples: "
              "%.2f%%",
              (acc * 100),
          )
  
          # Test targeted attack
          targets = random_targets(self.y_test_iris, nb_classes=3)
          attack = BasicIterativeMethod(
              classifier,
              targeted=True,
              eps=1.0,
              eps_step=0.1,
              batch_size=128,
              max_iter=5,
              verbose=False,
          )
          x_test_adv = attack.generate(
              self.x_test_iris, **{"y": targets}
          )
          self.assertFalse((self.x_test_iris == x_test_adv).all())
          self.assertTrue((x_test_adv <= 1).all())
          self.assertTrue((x_test_adv >= 0).all())
  
          preds_adv = np.argmax(classifier.predict(x_test_adv), axis=1)
          self.assertTrue(
              (np.argmax(targets, axis=1) == preds_adv).any()
          )
          acc = (
              np.sum(preds_adv == np.argmax(targets, axis=1))
              / self.y_test_iris.shape[0]
          )
          logger.info(
              "Success rate of "
              + classifier.__class__.__name__
              + " on targeted BIM on Iris: %.2f%%",
              (acc * 100),
          )
  
          # Check that x_test has not been modified by attack and classifier
          self.assertAlmostEqual(
              float(np.max(np.abs(x_test_original - self.x_test_iris))),
              0.0,
              delta=0.00001,
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import unittest
  import numpy
  from art.attacks.evasion.iterative_method import BasicIterativeMethod
  from art.estimators.classification.keras import KerasClassifier
  from art.estimators.estimator import BaseEstimator, LossGradientsMixin
  from art.utils import get_labels_np_array, random_targets
  from tests.attacks.utils import backend_test_classifier_type_check_fail
  from tests.utils import TestBase, get_image_classifier_kr, get_image_classifier_pt, get_image_classifier_tf, get_tabular_classifier_kr, get_tabular_classifier_pt, get_tabular_classifier_tf
label_desc: Use image node_id 15 for calling the TestIterativeAttack obj's underlying member method code with example usage: obj.test_8_scikitlearn() without return types