class_docstr: Density estimation based on Gaussian Mixture Model.
  
  Args:
      n_components (int): Number of components used in the GMM.
code: def __init__(self, n_components: int = 2) -> None:
      super().__init__()
  
      # TODO: replace with custom pytorch implementation of GMM (CVS-109432)
      self.gmm = GaussianMixture(
          n_components=n_components, random_state=0
      )
      self.memory_bank: 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 GMMEstimator object from inherited base classes: BaseDensityEstimator with example: obj = GMMEstimator(n_components)