code: def _gen_problem_from_data(data, feature_names):
      bounds = [
          _soft_min_max(data[:, i]) for i, _ in enumerate(feature_names)
      ]
      problem = {
          "num_vars": len(feature_names),
          "names": feature_names,
          "bounds": bounds,
      }
      return problem
  
imports: from ..api.base import ExplainerMixin
  from ..api.templates import FeatureValueExplanation
  from ..utils._explanation import gen_name_from_class, gen_global_selector
  from abc import ABC, abstractmethod
  import numpy
  from ..utils._clean_x import preclean_X
  from ..utils._unify_predict import determine_classes, unify_predict_fn
  from ..utils._unify_data import unify_data
label_desc: Use image node_id 2 for calling a global function with example usage: _gen_problem_from_data(data, feature_names) and returns: problem