@@ -229,7 +229,7 @@ def __init__(
229229 # #
230230 # #
231231 ################################################
232-
232+
233233 self .n_jobs = 1
234234
235235 if self .n_jobs == None :
@@ -849,39 +849,55 @@ def calibrate_preds_func_pygam(
849849 # predicted_tr = list(predicted_tr)
850850 # measured_tr = list(measured_tr)
851851
852- # Fit a SplineTransformer model
853- if self .deeplc_retrain :
854- spline = SplineTransformer (degree = 2 , n_knots = 10 )
855- linear_model = LinearRegression ()
856- linear_model .fit (predicted_tr .reshape (- 1 , 1 ), measured_tr )
857-
858- linear_model_left = linear_model
859- spline_model = linear_model
860- linear_model_right = linear_model
861- else :
862- spline = SplineTransformer (
863- degree = 4 , n_knots = int (len (measured_tr ) / 500 ) + 5
852+ try :
853+ # Fit a SplineTransformer model
854+ if self .deeplc_retrain :
855+ spline = SplineTransformer (degree = 2 , n_knots = 10 )
856+ linear_model = LinearRegression ()
857+ linear_model .fit (predicted_tr .reshape (- 1 , 1 ), measured_tr )
858+
859+ linear_model_left = linear_model
860+ spline_model = linear_model
861+ linear_model_right = linear_model
862+ else :
863+ spline = SplineTransformer (
864+ degree = 4 , n_knots = int (len (measured_tr ) / 500 ) + 5
865+ )
866+ spline_model = make_pipeline (spline , LinearRegression ())
867+ spline_model .fit (predicted_tr .reshape (- 1 , 1 ), measured_tr )
868+
869+ # Determine the top 10% of data on either end
870+ n_top = int (len (predicted_tr ) * 0.1 )
871+
872+ # Fit a linear model on the bottom 10% (left-side extrapolation)
873+ X_left = predicted_tr [:n_top ]
874+ y_left = measured_tr [:n_top ]
875+ linear_model_left = LinearRegression ()
876+ linear_model_left .fit (X_left .reshape (- 1 , 1 ), y_left )
877+
878+ # Fit a linear model on the top 10% (right-side extrapolation)
879+ X_right = predicted_tr [- n_top :]
880+ y_right = measured_tr [- n_top :]
881+ linear_model_right = LinearRegression ()
882+ linear_model_right .fit (X_right .reshape (- 1 , 1 ), y_right )
883+ calibrate_min = min (predicted_tr )
884+ calibrate_max = max (predicted_tr )
885+ except Exception as e :
886+ logger .warning (
887+ "Error fitting calibration models: %s. Will return non-calibrated values." ,
888+ e ,
864889 )
865- spline_model = make_pipeline (spline , LinearRegression ())
866- spline_model .fit (predicted_tr .reshape (- 1 , 1 ), measured_tr )
867-
868- # Determine the top 10% of data on either end
869- n_top = int (len (predicted_tr ) * 0.1 )
870-
871- # Fit a linear model on the bottom 10% (left-side extrapolation)
872- X_left = predicted_tr [:n_top ]
873- y_left = measured_tr [:n_top ]
874- linear_model_left = LinearRegression ()
875- linear_model_left .fit (X_left .reshape (- 1 , 1 ), y_left )
876-
877- # Fit a linear model on the top 10% (right-side extrapolation)
878- X_right = predicted_tr [- n_top :]
879- y_right = measured_tr [- n_top :]
890+ X = np .array ([0 , 1 , 2 , 3 , 4 , 5 ]).reshape (- 1 , 1 )
891+ y = X .copy ()
892+ spline_model = LinearRegression ()
893+ spline_model .fit (X , y )
880894 linear_model_right = LinearRegression ()
881- linear_model_right .fit (X_right .reshape (- 1 , 1 ), y_right )
895+ linear_model_right .fit (X , y )
896+ linear_model_left = LinearRegression ()
897+ linear_model_left .fit (X , y )
882898
883- calibrate_min = min ( predicted_tr )
884- calibrate_max = max ( predicted_tr )
899+ calibrate_min = 0.0
900+ calibrate_max = 10.0
885901
886902 return (
887903 calibrate_min ,
0 commit comments