class_docstr: Mini-Batch K-Means clustering.
  
  Read more in the :ref:`User Guide <mini_batch_kmeans>`.
  
  Parameters
  ----------
  
  n_clusters : int, default=8
      The number of clusters to form as well as the number of
      centroids to generate.
  
  init : {'k-means++', 'random'}, callable or array-like of shape             (n_clusters, n_features), default='k-means++'
      Method for initialization:
  
      'k-means++' : selects initial cluster centroids using sampling based on
      an empirical probability distribution of the points' contribution to the
      overall inertia. This technique speeds up convergence. The algorithm
      implemented is "greedy k-means++". It differs from the vanilla k-means++
      by making several trials at each sampling step and choosing the best centroid
      among them.
  
      'random': choose `n_clusters` observations (rows) at random from data
      for the initial centroids.
  
      If an array is passed, it should be of shape (n_clusters, n_features)
      and gives the initial centers.
  
      If a callable is passed, it should take arguments X, n_clusters and a
      random state and return an initialization.
  
  max_iter : int, default=100
      Maximum number of iterations over the complete dataset before
      stopping independently of any early stopping criterion heuristics.
  
  batch_size : int, default=1024
      Size of the mini batches.
      For faster computations, you can set the ``batch_size`` greater than
      256 * number of cores to enable parallelism on all cores.
  
      .. versionchanged:: 1.0
         `batch_size` default changed from 100 to 1024.
  
  verbose : int, default=0
      Verbosity mode.
  
  compute_labels : bool, default=True
      Compute label assignment and inertia for the complete dataset
      once the minibatch optimization has converged in fit.
  
  random_state : int, RandomState instance or None, default=None
      Determines random number generation for centroid initialization and
      random reassignment. Use an int to make the randomness deterministic.
      See :term:`Glossary <random_state>`.
  
  tol : float, default=0.0
      Control early stopping based on the relative center changes as
      measured by a smoothed, variance-normalized of the mean center
      squared position changes. This early stopping heuristics is
      closer to the one used for the batch variant of the algorithms
      but induces a slight computational and memory overhead over the
      inertia heuristic.
  
      To disable convergence detection based on normalized center
      change, set tol to 0.0 (default).
  
  max_no_improvement : int, default=10
      Control early stopping based on the consecutive number of mini
      batches that does not yield an improvement on the smoothed inertia.
  
      To disable convergence detection based on inertia, set
      max_no_improvement to None.
  
  init_size : int, default=None
      Number of samples to randomly sample for speeding up the
      initialization (sometimes at the expense of accuracy): the
      only algorithm is initialized by running a batch KMeans on a
      random subset of the data. This needs to be larger than n_clusters.
  
      If `None`, the heuristic is `init_size = 3 * batch_size` if
      `3 * batch_size < n_clusters`, else `init_size = 3 * n_clusters`.
  
  n_init : 'auto' or int, default="auto"
      Number of random initializations that are tried.
      In contrast to KMeans, the algorithm is only run once, using the best of
      the `n_init` initializations as measured by inertia. Several runs are
      recommended for sparse high-dimensional problems (see
      :ref:`kmeans_sparse_high_dim`).
  
      When `n_init='auto'`, the number of runs depends on the value of init:
      3 if using `init='random'` or `init` is a callable;
      1 if using `init='k-means++'` or `init` is an array-like.
  
      .. versionadded:: 1.2
         Added 'auto' option for `n_init`.
  
      .. versionchanged:: 1.4
         Default value for `n_init` changed to `'auto'` in version.
  
  reassignment_ratio : float, default=0.01
      Control the fraction of the maximum number of counts for a center to
      be reassigned. A higher value means that low count centers are more
      easily reassigned, which means that the model will take longer to
      converge, but should converge in a better clustering. However, too high
      a value may cause convergence issues, especially with a small batch
      size.
  
  Attributes
  ----------
  
  cluster_centers_ : ndarray of shape (n_clusters, n_features)
      Coordinates of cluster centers.
  
  labels_ : ndarray of shape (n_samples,)
      Labels of each point (if compute_labels is set to True).
  
  inertia_ : float
      The value of the inertia criterion associated with the chosen
      partition if compute_labels is set to True. If compute_labels is set to
      False, it's an approximation of the inertia based on an exponentially
      weighted average of the batch inertiae.
      The inertia is defined as the sum of square distances of samples to
      their cluster center, weighted by the sample weights if provided.
  
  n_iter_ : int
      Number of iterations over the full dataset.
  
  n_steps_ : int
      Number of minibatches processed.
  
      .. versionadded:: 1.0
  
  n_features_in_ : int
      Number of features seen during :term:`fit`.
  
      .. versionadded:: 0.24
  
  feature_names_in_ : ndarray of shape (`n_features_in_`,)
      Names of features seen during :term:`fit`. Defined only when `X`
      has feature names that are all strings.
  
      .. versionadded:: 1.0
  
  See Also
  --------
  KMeans : The classic implementation of the clustering method based on the
      Lloyd's algorithm. It consumes the whole set of input data at each
      iteration.
  
  Notes
  -----
  See https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf
  
  When there are too few points in the dataset, some centers may be
  duplicated, which means that a proper clustering in terms of the number
  of requesting clusters and the number of returned clusters will not
  always match. One solution is to set `reassignment_ratio=0`, which
  prevents reassignments of clusters that are too small.
  
  Examples
  --------
  >>> from sklearn.cluster import MiniBatchKMeans
  >>> import numpy as np
  >>> X = np.array([[1, 2], [1, 4], [1, 0],
  ...               [4, 2], [4, 0], [4, 4],
  ...               [4, 5], [0, 1], [2, 2],
  ...               [3, 2], [5, 5], [1, -1]])
  >>> # manually fit on batches
  >>> kmeans = MiniBatchKMeans(n_clusters=2,
  ...                          random_state=0,
  ...                          batch_size=6,
  ...                          n_init="auto")
  >>> kmeans = kmeans.partial_fit(X[0:6,:])
  >>> kmeans = kmeans.partial_fit(X[6:12,:])
  >>> kmeans.cluster_centers_
  array([[3.375, 3.  ],
         [0.75 , 0.5 ]])
  >>> kmeans.predict([[0, 0], [4, 4]])
  array([1, 0], dtype=int32)
  >>> # fit on the whole data
  >>> kmeans = MiniBatchKMeans(n_clusters=2,
  ...                          random_state=0,
  ...                          batch_size=6,
  ...                          max_iter=10,
  ...                          n_init="auto").fit(X)
  >>> kmeans.cluster_centers_
  array([[3.55102041, 2.48979592],
         [1.06896552, 1.        ]])
  >>> kmeans.predict([[0, 0], [4, 4]])
  array([1, 0], dtype=int32)
class_docstr_tok: ["Mini-Batch","K-Means","clustering",".","Read","more","in","the",":","ref",":","`","User","Guide","<","mini_batch_kmeans",">","`",".","Parameters","--","--","--","--","--","n_clusters",":","int",",","default=8","The","number","of","clusters","to","form","as","well","as","the","number","of","centroids","to","generate",".","init",":","{","'","k-means++","'",",","'random","'","}",",","callable","or","array-like","of","shape","(","n_clusters",",","n_features",")",",","default=","'","k-means++'","Method","for","initialization",":","'","k-means++","'",":","selects","initial","cluster","centroids","using","sampling","based","on","an","empirical","probability","distribution","of","the","points","'","contribution","to","the","overall","inertia",".","This","technique","speeds","up","convergence",".","The","algorithm","implemented","is","``","greedy","k-means++","''",".","It","differs","from","the","vanilla","k-means++","by","making","several","trials","at","each","sampling","step","and","choosing","the","best","centroid","among","them",".","'random","'",":","choose","`","n_clusters","`","observations","(","rows",")","at","random","from","data","for","the","initial","centroids",".","If","an","array","is","passed",",","it","should","be","of","shape","(","n_clusters",",","n_features",")","and","gives","the","initial","centers",".","If","a","callable","is","passed",",","it","should","take","arguments","X",",","n_clusters","and","a","random","state","and","return","an","initialization",".","max_iter",":","int",",","default=100","Maximum","number","of","iterations","over","the","complete","dataset","before","stopping","independently","of","any","early","stopping","criterion","heuristics",".","batch_size",":","int",",","default=1024","Size","of","the","mini","batches",".","For","faster","computations",",","you","can","set","the","``","batch_size","``","greater","than","256","*","number","of","cores","to","enable","parallelism","on","all","cores",".","..","versionchanged",":",":","1.0","`","batch_size","`","default","changed","from","100","to","1024.","verbose",":","int",",","default=0","Verbosity","mode",".","compute_labels",":","bool",",","default=True","Compute","label","assignment","and","inertia","for","the","complete","dataset","once","the","minibatch","optimization","has","converged","in","fit",".","random_state",":","int",",","RandomState","instance","or","None",",","default=None","Determines","random","number","generation","for","centroid","initialization","and","random","reassignment",".","Use","an","int","to","make","the","randomness","deterministic",".","See",":","term",":","`","Glossary","<","random_state",">","`",".","tol",":","float",",","default=0.0","Control","early","stopping","based","on","the","relative","center","changes","as","measured","by","a","smoothed",",","variance-normalized","of","the","mean","center","squared","position","changes",".","This","early","stopping","heuristics","is","closer","to","the","one","used","for","the","batch","variant","of","the","algorithms","but","induces","a","slight","computational","and","memory","overhead","over","the","inertia","heuristic",".","To","disable","convergence","detection","based","on","normalized","center","change",",","set","tol","to","0.0","(","default",")",".","max_no_improvement",":","int",",","default=10","Control","early","stopping","based","on","the","consecutive","number","of","mini","batches","that","does","not","yield","an","improvement","on","the","smoothed","inertia",".","To","disable","convergence","detection","based","on","inertia",",","set","max_no_improvement","to","None",".","init_size",":","int",",","default=None","Number","of","samples","to","randomly","sample","for","speeding","up","the","initialization","(","sometimes","at","the","expense","of","accuracy",")",":","the","only","algorithm","is","initialized","by","running","a","batch","KMeans","on","a","random","subset","of","the","data",".","This","needs","to","be","larger","than","n_clusters",".","If","`","None","`",",","the","heuristic","is","`","init_size","=","3","*","batch_size","`","if","`","3","*","batch_size","<","n_clusters","`",",","else","`","init_size","=","3","*","n_clusters","`",".","n_init",":","'auto","'","or","int",",","default=","''","auto","''","Number","of","random","initializations","that","are","tried",".","In","contrast","to","KMeans",",","the","algorithm","is","only","run","once",",","using","the","best","of","the","`","n_init","`","initializations","as","measured","by","inertia",".","Several","runs","are","recommended","for","sparse","high-dimensional","problems","(","see",":","ref",":","`","kmeans_sparse_high_dim","`",")",".","When","`","n_init='auto","'","`",",","the","number","of","runs","depends","on","the","value","of","init",":","3","if","using","`","init='random","'","`","or","`","init","`","is","a","callable",";","1","if","using","`","init=","'","k-means++","'","`","or","`","init","`","is","an","array-like",".","..","versionadded",":",":","1.2","Added","'auto","'","option","for","`","n_init","`",".","..","versionchanged",":",":","1.4","Default","value","for","`","n_init","`","changed","to","`","'auto","'","`","in","version",".","reassignment_ratio",":","float",",","default=0.01","Control","the","fraction","of","the","maximum","number","of","counts","for","a","center","to","be","reassigned",".","A","higher","value","means","that","low","count","centers","are","more","easily","reassigned",",","which","means","that","the","model","will","take","longer","to","converge",",","but","should","converge","in","a","better","clustering",".","However",",","too","high","a","value","may","cause","convergence","issues",",","especially","with","a","small","batch","size",".","Attributes","--","--","--","--","--","cluster_centers_",":","ndarray","of","shape","(","n_clusters",",","n_features",")","Coordinates","of","cluster","centers",".","labels_",":","ndarray","of","shape","(","n_samples",",",")","Labels","of","each","point","(","if","compute_labels","is","set","to","True",")",".","inertia_",":","float","The","value","of","the","inertia","criterion","associated","with","the","chosen","partition","if","compute_labels","is","set","to","True",".","If","compute_labels","is","set","to","False",",","it","'s","an","approximation","of","the","inertia","based","on","an","exponentially","weighted","average","of","the","batch","inertiae",".","The","inertia","is","defined","as","the","sum","of","square","distances","of","samples","to","their","cluster","center",",","weighted","by","the","sample","weights","if","provided",".","n_iter_",":","int","Number","of","iterations","over","the","full","dataset",".","n_steps_",":","int","Number","of","minibatches","processed",".","..","versionadded",":",":","1.0","n_features_in_",":","int","Number","of","features","seen","during",":","term",":","`","fit","`",".","..","versionadded",":",":","0.24","feature_names_in_",":","ndarray","of","shape","(","`","n_features_in_","`",",",")","Names","of","features","seen","during",":","term",":","`","fit","`",".","Defined","only","when","`","X","`","has","feature","names","that","are","all","strings",".","..","versionadded",":",":","1.0","See","Also","--","--","--","--","KMeans",":","The","classic","implementation","of","the","clustering","method","based","on","the","Lloyd","'s","algorithm",".","It","consumes","the","whole","set","of","input","data","at","each","iteration",".","Notes","--","--","-","See","https",":","\/\/www.eecs.tufts.edu\/~dsculley\/papers\/fastkmeans.pdf","When","there","are","too","few","points","in","the","dataset",",","some","centers","may","be","duplicated",",","which","means","that","a","proper","clustering","in","terms","of","the","number","of","requesting","clusters","and","the","number","of","returned","clusters","will","not","always","match",".","One","solution","is","to","set","`","reassignment_ratio=0","`",",","which","prevents","reassignments","of","clusters","that","are","too","small",".","Examples","--","--","--","--",">",">",">","from","sklearn.cluster","import","MiniBatchKMeans",">",">",">","import","numpy","as","np",">",">",">","X","=","np.array","(","[","[","1",",","2","]",",","[","1",",","4","]",",","[","1",",","0","]",",","...","[","4",",","2","]",",","[","4",",","0","]",",","[","4",",","4","]",",","...","[","4",",","5","]",",","[","0",",","1","]",",","[","2",",","2","]",",","...","[","3",",","2","]",",","[","5",",","5","]",",","[","1",",","-1","]","]",")",">",">",">","#","manually","fit","on","batches",">",">",">","kmeans","=","MiniBatchKMeans","(","n_clusters=2",",","...","random_state=0",",","...","batch_size=6",",","...","n_init=","''","auto","''",")",">",">",">","kmeans","=","kmeans.partial_fit","(","X","[","0:6",",",":","]",")",">",">",">","kmeans","=","kmeans.partial_fit","(","X","[","6:12",",",":","]",")",">",">",">","kmeans.cluster_centers_","array","(","[","[","3.375",",","3",".","]",",","[","0.75",",","0.5","]","]",")",">",">",">","kmeans.predict","(","[","[","0",",","0","]",",","[","4",",","4","]","]",")","array","(","[","1",",","0","]",",","dtype=int32",")",">",">",">","#","fit","on","the","whole","data",">",">",">","kmeans","=","MiniBatchKMeans","(","n_clusters=2",",","...","random_state=0",",","...","batch_size=6",",","...","max_iter=10",",","...","n_init=","''","auto","''",")",".fit","(","X",")",">",">",">","kmeans.cluster_centers_","array","(","[","[","3.55102041",",","2.48979592","]",",","[","1.06896552",",","1",".","]","]",")",">",">",">","kmeans.predict","(","[","[","0",",","0","]",",","[","4",",","4","]","]",")","array","(","[","1",",","0","]",",","dtype=int32",")"]
code: def __init__(
      self,
      n_clusters=8,
      *,
      init="k-means++",
      max_iter=100,
      batch_size=1024,
      verbose=0,
      compute_labels=True,
      random_state=None,
      tol=0.0,
      max_no_improvement=10,
      init_size=None,
      n_init="auto",
      reassignment_ratio=0.01,
  ):
      super().__init__(
          n_clusters=n_clusters,
          init=init,
          max_iter=max_iter,
          verbose=verbose,
          random_state=random_state,
          tol=tol,
          n_init=n_init,
      )
  
      self.max_no_improvement = max_no_improvement
      self.batch_size = batch_size
      self.compute_labels = compute_labels
      self.init_size = init_size
      self.reassignment_ratio = reassignment_ratio
  
imports: import warnings
  from abc import ABC, abstractmethod
  from numbers import Integral, Real
  import numpy
  import scipy.sparse
  from ..base import BaseEstimator, ClassNamePrefixFeaturesOutMixin, ClusterMixin, TransformerMixin, _fit_context
  from ..exceptions import ConvergenceWarning
  from ..metrics.pairwise import _euclidean_distances, euclidean_distances
  from ..utils import check_array, check_random_state
  from ..utils._openmp_helpers import _openmp_effective_n_threads
  from ..utils._param_validation import Interval, StrOptions, validate_params
  from ..utils.extmath import row_norms, stable_cumsum
  from ..utils.fixes import threadpool_info, threadpool_limits
  from ..utils.sparsefuncs import mean_variance_axis
  from ..utils.sparsefuncs_fast import assign_rows_csr
  from ..utils.validation import _check_sample_weight, _is_arraylike_not_scalar, check_is_fitted
  from ._k_means_common import CHUNK_SIZE, _inertia_dense, _inertia_sparse, _is_same_clustering
  from ._k_means_elkan import elkan_iter_chunked_dense, elkan_iter_chunked_sparse, init_bounds_dense, init_bounds_sparse
  from ._k_means_lloyd import lloyd_iter_chunked_dense, lloyd_iter_chunked_sparse
  from ._k_means_minibatch import _minibatch_update_dense, _minibatch_update_sparse
label_desc: Use image node_id 1 to create a new MiniBatchKMeans object from inherited base classes: _BaseKMeans with example: obj = MiniBatchKMeans(n_clusters)