class_docstr: IsoData clustering.
  A heuristic algorithm based on geometrical proximity of the data points.
  
  :param init_cluster_count: the number of initial clusters.
      The initial cluster centers are randomly selected from the input data.
  :type init_cluster_count: int
  
  :param max_cluster_count: the maximum number of clusters.
  :type max_cluster_count: int
  
  :param min_cluster_size: the minimum cluster size.
  :type min_cluster_size: int
  
  :param max_iteration_count: the maximum number of algorithm iterations. 
  :type max_iteration_count: int
  
  :param min_cluster_distance: the minimum distance between the clusters.
      Whenever two clusters are closer they are merged.
  :type min_cluster_distance: float
  
  :param max_cluster_diameter: the maximum cluster diameter.
      Whenever a cluster is larger it may be split.
  :type max_cluster_diameter: float
  
  :param mean_diameter_coef: indicates how much the cluster diameter may exceed 
      the mean diameter across all the clusters. If a cluster diameter is larger
      than the mean diameter multiplied by this value it may be split.
  :type mean_diameter_coef: float
class_docstr_tok: ["IsoData","clustering",".","A","heuristic","algorithm","based","on","geometrical","proximity","of","the","data","points",".",":","param","init_cluster_count",":","the","number","of","initial","clusters",".","The","initial","cluster","centers","are","randomly","selected","from","the","input","data",".",":","type","init_cluster_count",":","int",":","param","max_cluster_count",":","the","maximum","number","of","clusters",".",":","type","max_cluster_count",":","int",":","param","min_cluster_size",":","the","minimum","cluster","size",".",":","type","min_cluster_size",":","int",":","param","max_iteration_count",":","the","maximum","number","of","algorithm","iterations",".",":","type","max_iteration_count",":","int",":","param","min_cluster_distance",":","the","minimum","distance","between","the","clusters",".","Whenever","two","clusters","are","closer","they","are","merged",".",":","type","min_cluster_distance",":","float",":","param","max_cluster_diameter",":","the","maximum","cluster","diameter",".","Whenever","a","cluster","is","larger","it","may","be","split",".",":","type","max_cluster_diameter",":","float",":","param","mean_diameter_coef",":","indicates","how","much","the","cluster","diameter","may","exceed","the","mean","diameter","across","all","the","clusters",".","If","a","cluster","diameter","is","larger","than","the","mean","diameter","multiplied","by","this","value","it","may","be","split",".",":","type","mean_diameter_coef",":","float"]
code: def __init__(
      self,
      init_cluster_count,
      max_cluster_count,
      min_cluster_size,
      max_iteration_count,
      min_cluster_distance,
      max_cluster_diameter,
      mean_diameter_coef,
  ):
      if max_iteration_count <= 0:
          raise ValueError("The `max_iteration_count` must be > 0.")
      if init_cluster_count <= 0:
          raise ValueError("The `init_cluster_count` must be > 0.")
      if min_cluster_size <= 0:
          raise ValueError("The `min_cluster_size` must be > 0.")
  
      super().__init__(
          int(init_cluster_count),
          int(max_cluster_count),
          int(min_cluster_size),
          int(max_iteration_count),
          float(min_cluster_distance),
          float(max_cluster_diameter),
          float(mean_diameter_coef),
      )
  
file_path: neoml/NeoML/Python/neoml/Clustering.py
imports: import numpy
  from .Utils import convert_data, get_data
  from scipy.sparse import csr_matrix
  import neoml.PythonWrapper
label_desc: Use image node_id 1 to create a new IsoData object from inherited base classes: PythonWrapper with example: obj = IsoData(init_cluster_count, max_cluster_count, min_cluster_size, max_iteration_count, min_cluster_distance, max_cluster_diameter, mean_diameter_coef)