class_docstr: Method from Chen et al., 2018 performing poisoning detection based on activations clustering.
  
  | Paper link: https://arxiv.org/abs/1811.03728
  
  | Please keep in mind the limitations of defences. For more information on the limitations of this
      defence, see https://arxiv.org/abs/1905.13409 . For details on how to evaluate classifier security
      in general, see https://arxiv.org/abs/1902.06705
code: def _check_params(self):
      if self.nb_clusters <= 1:
          raise ValueError(
              "Wrong number of clusters, should be greater or equal to 2. Provided: "
              + str(self.nb_clusters)
          )
      if self.nb_dims <= 0:
          raise ValueError("Wrong number of dimensions.")
      if self.clustering_method not in self.valid_clustering:
          raise ValueError(
              "Unsupported clustering method: " + self.clustering_method
          )
      if self.reduce not in self.valid_reduce:
          raise ValueError(
              "Unsupported reduction method: " + self.reduce
          )
      if self.cluster_analysis not in self.valid_analysis:
          raise ValueError(
              "Unsupported method for cluster analysis method: "
              + self.cluster_analysis
          )
      if self.generator and not isinstance(
          self.generator, DataGenerator
      ):
          raise TypeError(
              "Generator must a an instance of DataGenerator"
          )
      if self.ex_re_threshold is not None and self.ex_re_threshold <= 0:
          raise ValueError(
              "Exclusionary reclassification threshold must be positive"
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import os
  import pickle
  import time
  from typing import Any, Dict, List, Optional, Tuple, TYPE_CHECKING
  import numpy
  from sklearn.cluster import KMeans, MiniBatchKMeans
  from art import config
  from art.data_generators import DataGenerator
  from art.defences.detector.poison.clustering_analyzer import ClusteringAnalyzer
  from art.defences.detector.poison.ground_truth_evaluator import GroundTruthEvaluator
  from art.defences.detector.poison.poison_filtering_defence import PoisonFilteringDefence
  from art.utils import segment_by_class
  from art.visualization import create_sprite, save_image, plot_3d
label_desc: Use image node_id 14 for calling the ActivationDefence obj's underlying member method code with example usage: obj._check_params() without return types