class_docstr: Density estimator for AI-VAD.
  
  Combines density estimators for the different feature types included in the model.
  
  Args:
      use_velocity_features (bool): Flag indicating if velocity features should be used.
      use_pose_features (bool): Flag indicating if pose features should be used.
      use_deep_features (bool): Flag indicating if deep features should be used.
      n_components_velocity (int): Number of components used by GMM density estimation for velocity features.
      n_neighbors_pose (int): Number of neighbors used in KNN density estimation for pose features.
      n_neighbors_deep (int): Number of neighbors used in KNN density estimation for deep features.
code: def __init__(
      self,
      use_pose_features: bool = True,
      use_deep_features: bool = True,
      use_velocity_features: bool = False,
      n_neighbors_pose: int = 1,
      n_neighbors_deep: int = 1,
      n_components_velocity: int = 5,
  ) -> None:
      super().__init__()
  
      self.use_pose_features = use_pose_features
      self.use_deep_features = use_deep_features
      self.use_velocity_features = use_velocity_features
  
      if self.use_velocity_features:
          self.velocity_estimator = GMMEstimator(
              n_components=n_components_velocity
          )
      if self.use_deep_features:
          self.appearance_estimator = GroupedKNNEstimator(
              n_neighbors_deep
          )
      if self.use_pose_features:
          self.pose_estimator = GroupedKNNEstimator(
              n_neighbors=n_neighbors_pose
          )
      assert any(
          (use_pose_features, use_deep_features, use_velocity_features)
      )
  
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 CombinedDensityEstimator object from inherited base classes: BaseDensityEstimator with example: obj = CombinedDensityEstimator(use_pose_features, use_deep_features, use_velocity_features, n_neighbors_pose, n_neighbors_deep, n_components_velocity)