class_docstr: Class for explaining metric values with text.
  
  These briefly explain what a metric is and/or how it is calculated unless it
  is obvious (e.g. accuracy) and print the value.
  
  This class contains text explanations for all metric values regardless of
  which subclass they appear in. This will raise an error if the metric does
  not apply (e.g. calling `true_positive_rate` if
  `type(metric) == DatasetMetric`).
class_docstr_tok: ["Class","for","explaining","metric","values","with","text",".","These","briefly","explain","what","a","metric","is","and\/or","how","it","is","calculated","unless","it","is","obvious","(","e.g",".","accuracy",")","and","print","the","value",".","This","class","contains","text","explanations","for","all","metric","values","regardless","of","which","subclass","they","appear","in",".","This","will","raise","an","error","if","the","metric","does","not","apply","(","e.g",".","calling","`","true_positive_rate","`","if","`","type","(","metric",")","==","DatasetMetric","`",")","."]
code: def true_negative_rate(self, privileged=None):
      if privileged is None:
          return "True negative rate (TNR, specificity = TN / (FP + TN)): {}".format(
              self.metric.true_negative_rate(privileged=privileged)
          )
      return "True negative rate on {} instances: {}".format(
          "privileged" if privileged else "unprivileged",
          self.metric.true_negative_rate(privileged=privileged),
      )
  
imports: from aif360.explainers import Explainer
  from aif360.metrics import Metric
label_desc: Use image node_id 44 for calling the MetricTextExplainer obj's underlying member method code with example usage: obj.true_negative_rate(privileged) and returns: str, str