code: def test_sofm_learning_radius_reduction(self):
      X = 4 * np.ones((1, 2))
      default_params = dict(
          n_inputs=2,
          n_outputs=3,
          weight=np.ones((2, 3)),
          learning_radius=1,
      )
  
      sofm_1 = algorithms.SOFM(reduce_radius_after=1, **default_params)
      sofm_1.train(X, epochs=4)
      dist_1 = np.linalg.norm(sofm_1.weight.T - X)
  
      sofm_2 = algorithms.SOFM(reduce_radius_after=3, **default_params)
      sofm_2.train(X, epochs=4)
      dist_2 = np.linalg.norm(sofm_2.weight.T - X)
  
      # SOFM-2 suppose to be closer, becase learning radius
      # decreases slower with bigger reduction factor
      self.assertLess(dist_2, dist_1)
  
      sofm_3 = algorithms.SOFM(
          reduce_radius_after=None, **default_params
      )
      sofm_3.train(X, epochs=4)
      dist_3 = np.linalg.norm(sofm_3.weight.T - X)
  
      # SOFM-3 doesn't have any learning radius reduction, so it
      # converges even faster than SOFM-2
      self.assertLess(dist_3, dist_2)
  
imports: import math
  import numpy
  from neupy import algorithms
  from neupy.exceptions import WeightInitializationError
  from neupy.algorithms.competitive import sofm
  from neupy.algorithms.competitive.neighbours import gaussian_df
  from base import BaseTestCase
label_desc: Use image node_id 3 for calling the SOFMParameterReductionTestCase obj's underlying member method code with example usage: obj.test_sofm_learning_radius_reduction() without return types