code: def _has_estimator(transformation_list: List):
      """
      This function checks if there is an estimator in the transformation list.
  
      If there are no estimators, we can optimize processing by skipping the
      data preprocessing and running the transformations on the whole dataset.
      """
      for action, _ in transformation_list:
          if callable(action) or action in SUPPORTED_ESTIMATORS:
              return True
  
      return False
  
imports: import copy
  import logging
  from collections import OrderedDict, namedtuple
  from typing import Callable, List, Optional, Union
  import numpy
  import pandas
  from sklearn.ensemble import RandomForestRegressor
  from sklearn.linear_model import LinearRegression
  from sklearn.neighbors import KNeighborsRegressor
  from sklearn.neural_network import MLPRegressor
  from sklearn.svm import SVR
  from tqdm.auto import tqdm
  from dowhy.causal_estimator import CausalEstimate
  from dowhy.causal_estimators.econml import Econml
  from dowhy.causal_identifier.identified_estimand import IdentifiedEstimand
  from dowhy.causal_refuter import CausalRefutation, CausalRefuter, choose_variables, test_significance
label_desc: Use image node_id 3 for calling a global function with example usage: _has_estimator(transformation_list) and returns: False, True