class_docstr: Each subcluster in a CFNode is called a CFSubcluster.
  
  A CFSubcluster can have a CFNode has its child.
  
  Parameters
  ----------
  linear_sum : ndarray of shape (n_features,), default=None
      Sample. This is kept optional to allow initialization of empty
      subclusters.
  
  Attributes
  ----------
  n_samples_ : int
      Number of samples that belong to each subcluster.
  
  linear_sum_ : ndarray
      Linear sum of all the samples in a subcluster. Prevents holding
      all sample data in memory.
  
  squared_sum_ : float
      Sum of the squared l2 norms of all samples belonging to a subcluster.
  
  centroid_ : ndarray of shape (branching_factor + 1, n_features)
      Centroid of the subcluster. Prevent recomputing of centroids when
      ``CFNode.centroids_`` is called.
  
  child_ : _CFNode
      Child Node of the subcluster. Once a given _CFNode is set as the child
      of the _CFNode, it is set to ``self.child_``.
  
  sq_norm_ : ndarray of shape (branching_factor + 1,)
      Squared norm of the subcluster. Used to prevent recomputing when
      pairwise minimum distances are computed.
code: def __init__(self, *, linear_sum=None):
      if linear_sum is None:
          self.n_samples_ = 0
          self.squared_sum_ = 0.0
          self.centroid_ = self.linear_sum_ = 0
      else:
          self.n_samples_ = 1
          self.centroid_ = self.linear_sum_ = linear_sum
          self.squared_sum_ = self.sq_norm_ = np.dot(
              self.linear_sum_, self.linear_sum_
          )
      self.child_ = None
  
imports: import warnings
  from math import sqrt
  from numbers import Integral, Real
  import numpy
  from scipy import sparse
  from .._config import config_context
  from ..base import BaseEstimator, ClassNamePrefixFeaturesOutMixin, ClusterMixin, TransformerMixin, _fit_context
  from ..exceptions import ConvergenceWarning
  from ..metrics import pairwise_distances_argmin
  from ..metrics.pairwise import euclidean_distances
  from ..utils._param_validation import Interval
  from ..utils.extmath import row_norms
  from ..utils.validation import check_is_fitted
  from .None import AgglomerativeClustering
label_desc: Use image node_id 1 to create a new _CFSubcluster object  with example: obj = _CFSubcluster()