class_docstr: Computes accuracy stats and a confusion matrix for the validation dataset 
code: def analyze(
      self, info: Dict[str, object], **kwargs
  ) -> Dict[str, object]:
      ns = SimpleNamespace(**kwargs)
  
      accuracy_functions = ns.accuracy_functions
  
      info["score_dict"] = evaluate_accuracies(
          ns.data,
          ns.normal_predictions["prediction"],
          ns.target,
          accuracy_functions,
          ts_analysis=ns.ts_analysis,
      )
  
      info["normal_accuracy"] = round(
          np.mean(list(info["score_dict"].values())), self.n_decimals
      )
      self.fit(ns, info["result_df"])
      (
          info["val_overall_acc"],
          info["acc_histogram"],
          info["cm"],
          info["acc_samples"],
      ) = self.get_accuracy_stats()
      return info
  
file_path: lightwood/lightwood/analysis/helpers/acc_stats.py
imports: import random
  from types import SimpleNamespace
  from typing import Dict, Optional
  import numpy
  from sklearn.metrics import confusion_matrix
  from type_infer.dtype import dtype
  from lightwood.analysis.base import BaseAnalysisBlock
  from mindsdb_evaluator import evaluate_accuracies
label_desc: Use image node_id 2 for calling the AccStats obj's underlying member method code with example usage: obj.analyze(info) and returns: info