class_docstr: Class to be inherited by any analysis/explainer block.
class_docstr_tok: ["Class","to","be","inherited","by","any","analysis\/explainer","block","."]
docstr: This method should be called once during the explaining phase at inference time, or not called at all.
  Additional explanations can be at an instance level (row-wise) or global.
  For the former, return a data frame with any new insights. For the latter, a dictionary is required.
  
  :param row_insights: dataframe with previously computed row-level explanations.
  :param global_insights: dict() with any explanations that concern all predicted instances or the model itself.
  
  :returns:
      - row_insights: modified input dataframe with any new row insights added here.
      - global_insights: dict() with any explanations that concern all predicted instances or the model itself.
docstr_tok: ["This","method","should","be","called","once","during","the","explaining","phase","at","inference","time",",","or","not","called","at","all",".","Additional","explanations","can","be","at","an","instance","level","(","row-wise",")","or","global",".","For","the","former",",","return","a","data","frame","with","any","new","insights",".","For","the","latter",",","a","dictionary","is","required",".",":","param","row_insights",":","dataframe","with","previously","computed","row-level","explanations",".",":","param","global_insights",":","dict","(",")","with","any","explanations","that","concern","all","predicted","instances","or","the","model","itself",".",":","returns",":","-","row_insights",":","modified","input","dataframe","with","any","new","row","insights","added","here",".","-","global_insights",":","dict","(",")","with","any","explanations","that","concern","all","predicted","instances","or","the","model","itself","."]
code: def explain(
      self,
      row_insights: pd.DataFrame,
      global_insights: Dict[str, object],
      **kwargs,
  ) -> Tuple[pd.DataFrame, Dict[str, object]]:
      """
      This method should be called once during the explaining phase at inference time, or not called at all.
      Additional explanations can be at an instance level (row-wise) or global.
      For the former, return a data frame with any new insights. For the latter, a dictionary is required.
  
      :param row_insights: dataframe with previously computed row-level explanations.
      :param global_insights: dict() with any explanations that concern all predicted instances or the model itself.
  
      :returns:
          - row_insights: modified input dataframe with any new row insights added here.
          - global_insights: dict() with any explanations that concern all predicted instances or the model itself.
      """
      log.info(
          f"{self.__class__.__name__}.explain() has not been implemented, no modifications will be done to the data insights."
      )  # noqa
      return row_insights, global_insights
  
imports: from typing import Tuple, Dict, Optional
  import pandas
  from lightwood.helpers.log import log
label_desc: Use image node_id 3 for calling the BaseAnalysisBlock obj's underlying member method code with example usage: obj.explain(row_insights, global_insights) and returns: row_insights,  global_insights