class_docstr: Abstract class - Build a class that inherits from this class to implement
  a custom discretizer.
  Method bins() is to be redefined in the child class, as it is the actual
  custom part of the discretizer.
class_docstr_tok: ["Abstract","class","-","Build","a","class","that","inherits","from","this","class","to","implement","a","custom","discretizer",".","Method","bins","(",")","is","to","be","redefined","in","the","child","class",",","as","it","is","the","actual","custom","part","of","the","discretizer","."]
code: def get_undiscretize_values(self, feature, values):
      mins = np.array(self.mins[feature])[values]
      maxs = np.array(self.maxs[feature])[values]
  
      means = np.array(self.means[feature])[values]
      stds = np.array(self.stds[feature])[values]
      minz = (mins - means) / stds
      maxz = (maxs - means) / stds
      min_max_unequal = minz != maxz
  
      ret = minz
      ret[np.where(min_max_unequal)] = scipy.stats.truncnorm.rvs(
          minz[min_max_unequal],
          maxz[min_max_unequal],
          loc=means[min_max_unequal],
          scale=stds[min_max_unequal],
          random_state=self.random_state,
      )
      return ret
  
imports: import numpy
  import sklearn
  import sklearn.tree
  import scipy
  from sklearn.utils import check_random_state
  from abc import ABCMeta, abstractmethod
label_desc: Use image node_id 4 for calling the BaseDiscretizer obj's underlying member method code with example usage: obj.get_undiscretize_values(feature, values) and returns: ret