class_docstr: Grouped KNN density estimator.
  
  Keeps track of the group (e.g. video id) from which the features were sampled for normalization purposes.
  
  Args:
      n_neighbors (int): Number of neighbors used in KNN search.
code: def __init__(self, n_neighbors: int) -> None:
      super().__init__()
  
      self.n_neighbors = n_neighbors
      self.memory_bank: dict[Any, list[Tensor] | Tensor] = {}
      self.normalization_statistics = MinMax()
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from typing import Any
  import torch
  from sklearn.mixture import GaussianMixture
  from torch import Tensor, nn
  from anomalib.models.ai_vad.features import FeatureType
  from anomalib.utils.metrics.min_max import MinMax
label_desc: Use image node_id 1 to create a new GroupedKNNEstimator object from inherited base classes: BaseDensityEstimator with example: obj = GroupedKNNEstimator(n_neighbors)