class_docstr: Companion class to the confidence estimation analysis block. A normalizer is a secondary machine learning model
  tasked with learning to estimate the "difficulty" that the main predictor will have with any problem instance.
  
  The idea is that this model should emit higher scores for tougher predictions. All scores will be passed as a
  normalizing factor to the conformal prediction framework, thus:
    - widening bounds at the same confidence level if a prediction is harder
    - tightening bounds at the same confidence level if a predictions is easier
    
  Reference:
      Papadopoulos, H., Gammerman, A., & Vovk, V. (2008). Normalized nonconformity measures for regression Conformal Prediction.
class_docstr_tok: ["Companion","class","to","the","confidence","estimation","analysis","block",".","A","normalizer","is","a","secondary","machine","learning","model","tasked","with","learning","to","estimate","the","``","difficulty","''","that","the","main","predictor","will","have","with","any","problem","instance",".","The","idea","is","that","this","model","should","emit","higher","scores","for","tougher","predictions",".","All","scores","will","be","passed","as","a","normalizing","factor","to","the","conformal","prediction","framework",",","thus",":","-","widening","bounds","at","the","same","confidence","level","if","a","prediction","is","harder","-","tightening","bounds","at","the","same","confidence","level","if","a","predictions","is","easier","Reference",":","Papadopoulos",",","H.",",","Gammerman",",","A.",",","&","Vovk",",","V.","(","2008",")",".","Normalized","nonconformity","measures","for","regression","Conformal","Prediction","."]
code: def compute_numerical_labels(
      preds: np.ndarray, truths: np.ndarray, bounds: list
  ) -> np.ndarray:
      diffs = np.log(abs(preds - truths))
      diffs = diffs / np.max(diffs) if np.max(diffs) > 0 else diffs
      labels = np.clip(bounds[0] + diffs, bounds[0], bounds[1])
      return labels
  
file_path: lightwood/lightwood/analysis/nc/norm.py
imports: from typing import Union
  import numpy
  import pandas
  from scipy.stats import entropy
  from sklearn.linear_model import Ridge
  from sklearn.metrics import mean_absolute_error
  from type_infer.dtype import dtype
  from lightwood.mixer import BaseMixer
  from lightwood.api.types import PredictionArguments
  from lightwood.data.encoded_ds import EncodedDs, ConcatedEncodedDs
label_desc: Use image node_id 6 for calling the Normalizer obj's underlying member method code with example usage: obj.compute_numerical_labels(preds, truths, bounds) and returns: labels