code: def test_early_stopping(self):
      X, y = self.data
  
      model = GradientBoostingSurvivalAnalysis(
          n_estimators=1000,
          max_depth=2,
          n_iter_no_change=3,
          validation_fraction=0.2,
          random_state=0,
      )
      model.fit(X, y)
  
      assert model.n_estimators_ == 36
  
imports: from contextlib import nullcontext
  from os.path import dirname, join
  import numpy
  from numpy.testing import assert_array_almost_equal, assert_array_equal
  import pandas
  import pytest
  from sklearn.metrics import mean_squared_error
  from sksurv.column import categorical_to_numeric, standardize
  from sksurv.datasets import load_whas500
  from sksurv.ensemble import ComponentwiseGradientBoostingSurvivalAnalysis, GradientBoostingSurvivalAnalysis
  from sksurv.testing import FixtureParameterFactory, assert_cindex_almost_equal
  from sksurv.util import Surv
label_desc: Use image node_id 11 for calling the TestGradientBoosting obj's underlying member method code with example usage: obj.test_early_stopping() without return types