class_docstr: The Strategy interface declares operations common to all
  supported report output.
class_docstr_tok: ["The","Strategy","interface","declares","operations","common","to","all","supported","report","output","."]
docstr: Add information of learning curve to report.
  
  Args:
      notes(str): Explain the block
      history(:dict of dict): a dict of training log dict.
          key: epoch index
          value: learning epoch information
                  Each dict has two keys:
                      - params: a dict of params on current epochs (Optional)
                      - val_scores: a dict of which key is the metric name
                                and value is metric value
      best_idx(str):
          - the best epoch based on benchmark metric, corresponding the `history` dict key
      benchmark_metric(:str): the metric used for benchmarking during learning
      benchmark_threshold(:float, Optional): the benchmarking threshold to accept the training
      training_params(:dict): a dict of which key is training parameter name and
                              value is training parameter value
docstr_tok: ["Add","information","of","learning","curve","to","report",".","Args",":","notes","(","str",")",":","Explain","the","block","history","(",":","dict","of","dict",")",":","a","dict","of","training","log","dict",".","key",":","epoch","index","value",":","learning","epoch","information","Each","dict","has","two","keys",":","-","params",":","a","dict","of","params","on","current","epochs","(","Optional",")","-","val_scores",":","a","dict","of","which","key","is","the","metric","name","and","value","is","metric","value","best_idx","(","str",")",":","-","the","best","epoch","based","on","benchmark","metric",",","corresponding","the","`","history","`","dict","key","benchmark_metric","(",":","str",")",":","the","metric","used","for","benchmarking","during","learning","benchmark_threshold","(",":","float",",","Optional",")",":","the","benchmarking","threshold","to","accept","the","training","training_params","(",":","dict",")",":","a","dict","of","which","key","is","training","parameter","name","and","value","is","training","parameter","value"]
code: def draw_learning_curve(
      self,
      notes: str,
      *,
      history: dict,
      best_idx: str,
      benchmark_metric=None,
      benchmark_threshold=None,
      training_params=None,
  ):
      """
      Add information of learning curve to report.
  
      Args:
          notes(str): Explain the block
          history(:dict of dict): a dict of training log dict.
              key: epoch index
              value: learning epoch information
                      Each dict has two keys:
                          - params: a dict of params on current epochs (Optional)
                          - val_scores: a dict of which key is the metric name
                                    and value is metric value
          best_idx(str):
              - the best epoch based on benchmark metric, corresponding the `history` dict key
          benchmark_metric(:str): the metric used for benchmarking during learning
          benchmark_threshold(:float, Optional): the benchmarking threshold to accept the training
          training_params(:dict): a dict of which key is training parameter name and
                                  value is training parameter value
      """
      pass
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from abc import ABC, abstractmethod
  from typing import Tuple, Dict, List
  import numpy
  from xai.data import explorer
  from xai.formatter.report.section import OverviewSection, DetailSection
label_desc: Use image node_id 27 for calling the Writer obj's underlying member method code with example usage: obj.draw_learning_curve(notes) without return types