code: def normalized_mutual_info_score(
      preds: Tensor,
      target: Tensor,
      average_method: Literal[
          "min", "geometric", "arithmetic", "max"
      ] = "arithmetic",
  ) -> Tensor:
      """Compute normalized mutual information between two clusterings.
  
      Args:
          preds: predicted cluster labels
          target: ground truth cluster labels
          average_method: normalizer computation method
  
      Returns:
          Scalar tensor with normalized mutual info score between 0.0 and 1.0
  
      Example:
          >>> from torchmetrics.functional.clustering import normalized_mutual_info_score
          >>> target = torch.tensor([0, 3, 2, 2, 1])
          >>> preds = torch.tensor([1, 3, 2, 0, 1])
          >>> normalized_mutual_info_score(preds, target, "arithmetic")
          tensor(0.7919)
  
      """
      check_cluster_labels(preds, target)
      _validate_average_method_arg(average_method)
      mutual_info = mutual_info_score(preds, target)
      if torch.allclose(
          mutual_info, torch.tensor(0.0), atol=torch.finfo().eps
      ):
          return mutual_info
  
      normalizer = calculate_generalized_mean(
          torch.stack(
              [calculate_entropy(preds), calculate_entropy(target)]
          ),
          average_method,
      )
  
      return mutual_info / normalizer
  
imports: from typing import Literal
  import torch
  from torch import Tensor
  from torchmetrics.functional.clustering.mutual_info_score import mutual_info_score
  from torchmetrics.functional.clustering.utils import _validate_average_method_arg, calculate_entropy, calculate_generalized_mean, check_cluster_labels
label_desc: Use image node_id 1 for calling a global function with example usage: normalized_mutual_info_score(preds, target, average_method) and returns: unknown, mutual_info