class_docstr: Compute `Dunn Index`_.
  
  .. math::
      DI_m = \frac{\min_{1\leq i<j\leq m} \delta(C_i,C_j)}{\max_{1\leq k\leq m} \Delta_k}
  
  Where :math:`C_i` is a cluster of tensors, :math:`C_j` is a cluster of tensors,
  and :math:`\delta(C_i,C_j)` is the intercluster distance metric for :math:`m` clusters.
  
  This clustering metric is an intrinsic measure, because it does not rely on ground truth labels for the evaluation.
  Instead it examines how well the clusters are separated from each other. The score is higher when clusters are dense
  and well separated, which relates to a standard concept of a cluster.
  
  As input to ``forward`` and ``update`` the metric accepts the following input:
  
  - ``data`` (:class:`~torch.Tensor`): float tensor with shape ``(N,d)`` with the embedded data. ``d`` is the
    dimensionality of the embedding space.
  - ``labels`` (:class:`~torch.Tensor`): single integer tensor with shape ``(N,)`` with cluster labels
  
  As output of ``forward`` and ``compute`` the metric returns the following output:
  
  - ``dunn_index`` (:class:`~torch.Tensor`): A tensor with the Dunn Index
  
  Args:
      kwargs: Additional keyword arguments, see :ref:`Metric kwargs` for more info.
  
  Example::
      >>> import torch
      >>> from torchmetrics.clustering import DunnIndex
      >>> data = torch.tensor([[0, 0], [0.5, 0], [1, 0], [0.5, 1]])
      >>> labels = torch.tensor([0, 0, 0, 1])
      >>> dunn_index = DunnIndex(p=2)
      >>> dunn_index(data, labels)
      tensor(2.)
class_docstr_tok: ["Compute","`","Dunn","Index","`","_",".","..","math",":",":","DI_m","=","\\frac","{","\\min_","{","1\\leq","i","<","j\\leq","m","}","\\delta","(","C_i",",","C_j",")","}","{","\\max_","{","1\\leq","k\\leq","m","}","\\Delta_k","}","Where",":","math",":","`","C_i","`","is","a","cluster","of","tensors",",",":","math",":","`","C_j","`","is","a","cluster","of","tensors",",","and",":","math",":","`","\\delta","(","C_i",",","C_j",")","`","is","the","intercluster","distance","metric","for",":","math",":","`","m","`","clusters",".","This","clustering","metric","is","an","intrinsic","measure",",","because","it","does","not","rely","on","ground","truth","labels","for","the","evaluation",".","Instead","it","examines","how","well","the","clusters","are","separated","from","each","other",".","The","score","is","higher","when","clusters","are","dense","and","well","separated",",","which","relates","to","a","standard","concept","of","a","cluster",".","As","input","to","``","forward","``","and","``","update","``","the","metric","accepts","the","following","input",":","-","``","data","``","(",":","class",":","`","~torch.Tensor","`",")",":","float","tensor","with","shape","``","(","N",",","d",")","``","with","the","embedded","data",".","``","d","``","is","the","dimensionality","of","the","embedding","space",".","-","``","labels","``","(",":","class",":","`","~torch.Tensor","`",")",":","single","integer","tensor","with","shape","``","(","N",",",")","``","with","cluster","labels","As","output","of","``","forward","``","and","``","compute","``","the","metric","returns","the","following","output",":","-","``","dunn_index","``","(",":","class",":","`","~torch.Tensor","`",")",":","A","tensor","with","the","Dunn","Index","Args",":","kwargs",":","Additional","keyword","arguments",",","see",":","ref",":","`","Metric","kwargs","`","for","more","info",".","Example",":",":",">",">",">","import","torch",">",">",">","from","torchmetrics.clustering","import","DunnIndex",">",">",">","data","=","torch.tensor","(","[","[","0",",","0","]",",","[","0.5",",","0","]",",","[","1",",","0","]",",","[","0.5",",","1","]","]",")",">",">",">","labels","=","torch.tensor","(","[","0",",","0",",","0",",","1","]",")",">",">",">","dunn_index","=","DunnIndex","(","p=2",")",">",">",">","dunn_index","(","data",",","labels",")","tensor","(","2",".",")"]
docstr: Compute mutual information over state.
docstr_tok: ["Compute","mutual","information","over","state","."]
code: def compute(self) -> Tensor:
      """Compute mutual information over state."""
      return dunn_index(
          dim_zero_cat(self.data), dim_zero_cat(self.labels), self.p
      )
  
file_path: torchmetrics/src/torchmetrics/clustering/dunn_index.py
imports: from typing import Any, List, Optional, Sequence, Union
  from torch import Tensor
  from torchmetrics.functional.clustering.dunn_index import dunn_index
  from torchmetrics.metric import Metric
  from torchmetrics.utilities.data import dim_zero_cat
  from torchmetrics.utilities.imports import _MATPLOTLIB_AVAILABLE
  from torchmetrics.utilities.plot import _AX_TYPE, _PLOT_OUT_TYPE
label_desc: Use image node_id 3 for calling the DunnIndex obj's underlying member method code with example usage: obj.compute() and returns: dunn_index