code: def test_GAM_ISpline_2_knots():
      train1 = prepareData(
          "smalldata/glm_test/gaussian_20cols_10000Rows.csv"
      )
      gamX = ["C11", "C12", "C13"]
      x = train1.names
      x.remove("C21")
      predictors = [ele for ele in x if not (ele in gamX)]
  
      numKnots = [2, 2, 2]
      scale = [0.001, 0.001, 0.001]
      bs_type = [2, 2, 2]
      spline_order = [2, 3, 4]
  
      # building multiple models with same training / test datasets to make sure it works
      h2o_model = H2OGeneralizedAdditiveEstimator(
          family="gaussian",
          gam_columns=gamX,
          scale=scale,
          bs=bs_type,
          seed=12345,
          keep_gam_cols=True,
          spline_orders=spline_order,
          num_knots=numKnots,
      )
      h2o_model.train(x=[], y="C21", training_frame=train1)
      checkCorrectGAMCols(h2o_model, spline_order, numKnots, gamX)
  
imports: import sys
  import h2o
  from tests import pyunit_utils
  from h2o.estimators.gam import H2OGeneralizedAdditiveEstimator
label_desc: Use image node_id 1 for calling a global function with example usage: test_GAM_ISpline_2_knots() without return types