Skip to content

Commit 8109049

Browse files
Update deeplc.py
Is calibration fails, fit models that just return its own value
1 parent 3a33fb1 commit 8109049

File tree

1 file changed

+47
-31
lines changed

1 file changed

+47
-31
lines changed

deeplc/deeplc.py

Lines changed: 47 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)