code: def load_iris(
      raw: bool = False, test_set: float = 0.3
  ) -> DATASET_TYPE:
      """
      Loads the UCI Iris dataset from `config.ART_DATA_PATH` or downloads it if necessary.
  
      :param raw: `True` if no preprocessing should be applied to the data. Otherwise, data is normalized to 1.
      :param test_set: Proportion of the data to use as validation split. The value should be between 0 and 1.
      :return: Entire dataset and labels.
      """
      from sklearn.datasets import load_iris as load_iris_sk
  
      iris = load_iris_sk()
      data = iris.data
      if not raw:
          data /= np.amax(data)
      labels = to_categorical(iris.target, 3)
  
      min_, max_ = float(np.amin(data)), float(np.amax(data))
  
      # Split training and test sets
      split_index = int((1 - test_set) * len(data) / 3)
      x_train = np.vstack(
          (
              data[:split_index],
              data[50 : 50 + split_index],
              data[100 : 100 + split_index],
          )
      )
      y_train = np.vstack(
          (
              labels[:split_index],
              labels[50 : 50 + split_index],
              labels[100 : 100 + split_index],
          )
      )
  
      if split_index >= 49:
          x_test, y_test = None, None
      else:
          x_test = np.vstack(
              (
                  data[split_index:50],
                  data[50 + split_index : 100],
                  data[100 + split_index :],
              )
          ).astype(np.float32)
          y_test = np.vstack(
              (
                  labels[split_index:50],
                  labels[50 + split_index : 100],
                  labels[100 + split_index :],
              )
          )
          assert len(x_train) + len(x_test) == 150
  
          # Shuffle test set
          random_indices = np.random.permutation(len(y_test))
          x_test, y_test = (
              x_test[random_indices],
              y_test[random_indices],
          )
  
      # Shuffle training set
      random_indices = np.random.permutation(len(y_train))
      x_train, y_train = (
          x_train[random_indices].astype(np.float32),
          y_train[random_indices],
      )
  
      return (x_train, y_train), (x_test, y_test), min_, max_
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import math
  import os
  import shutil
  import sys
  import tarfile
  import warnings
  import zipfile
  from functools import wraps
  from inspect import signature
  from typing import TYPE_CHECKING, Callable, List, Dict, Optional, Tuple, Union
  import numpy
  import six
  from scipy.special import gammainc
  from tqdm.auto import tqdm
  from art import config
label_desc: Use image node_id 31 for calling a global function with example usage: load_iris(raw, test_set) and returns: x_train,  y_train,  x_test,  y_test,  min_,  max_