From f82718ec382841c5b419a1340daa2115ffe29388 Mon Sep 17 00:00:00 2001 From: model-plugin-warehouse CI Date: Wed, 28 Oct 2026 13:46:05 +0000 Subject: [PATCH] Release 12 (from main) --- index.encoded.txt | 2 +- index.yaml | 4 ++-- models/linear_regression/README.md | 6 +++--- models/linear_regression/index.yaml | 2 +- .../linear_regression/linear_regression_model.py | 16 ++++++++++------ models/linear_regression/schemas.yaml | 4 ++-- suse-store_DIFF.md | 6 +++--- 7 files changed, 22 insertions(+), 18 deletions(-) diff --git a/index.encoded.txt b/index.encoded.txt index ba755c5..b4799d0 100644 --- a/index.encoded.txt +++ b/index.encoded.txt @@ -1 +1 @@ -store_name: SUSE Storeversion: 11models:- name: linear_regression version: 1.2.2- name: xgboost version: 1.2.1runtimes: basic: path: runtime/basic.yaml version: 8 single: path: runtime/single.yaml version: 1 xgboost: path: runtime/xgboost.yaml version: 8 \ No newline at end of file +store_name: SUSE Storeversion: 12models:- name: linear_regression version: 1.2.3- name: xgboost version: 1.2.1runtimes: basic: path: runtime/basic.yaml version: 8 single: path: runtime/single.yaml version: 1 xgboost: path: runtime/xgboost.yaml version: 8 \ No newline at end of file diff --git a/index.yaml b/index.yaml index 76e099a..3f3b56d 100644 --- a/index.yaml +++ b/index.yaml @@ -1,8 +1,8 @@ store_name: SUSE Store -version: 11 +version: 12 models: - name: linear_regression - version: 1.2.2 + version: 1.2.3 - name: xgboost version: 1.2.1 runtimes: diff --git a/models/linear_regression/README.md b/models/linear_regression/README.md index 494edcd..c0d31e9 100644 --- a/models/linear_regression/README.md +++ b/models/linear_regression/README.md @@ -11,8 +11,8 @@ These parameters are defined in the `model.yaml` under `model.input_map` and are | `degree` | `2` | Degree of the polynomial used to create polynomial features. | | `interaction_only` | `true` | Whether to include only interaction features in polynomial features. | | `verbose` | `true` | Enable verbose output during model execution. | -| `clipping_max` | `100` | Maximum value for clipping prediction output. | -| `clipping_min` | `0` | Minimum value for clipping prediction output. | +| `clipping_max` | `100` | Optional maximum for prediction output (number, decimals allowed). | +| `clipping_min` | `0` | Optional minimum for prediction output (number, decimals allowed). | ## Data Preprocessor (`DataPreprocessor`) @@ -59,7 +59,7 @@ Neither method mutates the passed DataFrames. - If `variable_columns` is not set, it is inferred during `fit` as all columns except the target. - Polynomial features are created automatically when `degree > 1`. - Rows with NaN in any model input get a NaN prediction (the output always has one value per input row); rows with NaN features or NaN target are left out of the fit. -- `clipping` uses Q1/Q3 of the training target when replacing out-of-bounds predictions. +- `clipping` uses Q1/Q3 of the training target when replacing out-of-bounds predictions: a prediction above `clipping_max` becomes Q3, one below `clipping_min` becomes Q1 (a prediction equal to the limit is kept). Each limit is optional and independent — set only one and only that side is checked. - The wrapper enforces that `wrapper.target` is set before training or retraining; otherwise, a `ValueError` is raised to fail fast when the configuration is incomplete. All parameters documented above **must stay in sync** between: diff --git a/models/linear_regression/index.yaml b/models/linear_regression/index.yaml index 21fdf65..f0677bc 100644 --- a/models/linear_regression/index.yaml +++ b/models/linear_regression/index.yaml @@ -9,7 +9,7 @@ requirements: - mlflow==3.8.1 - git+ssh://git@github.com/Aignosi/sientia-dataops-library.git@1.11.0 - git+ssh://git@github.com/Aignosi/sientia-model-library.git@0.14.3 -version: 1.2.2 +version: 1.2.3 type: model model: class: LinearRegressionModel diff --git a/models/linear_regression/linear_regression_model.py b/models/linear_regression/linear_regression_model.py index d573289..b6d539c 100644 --- a/models/linear_regression/linear_regression_model.py +++ b/models/linear_regression/linear_regression_model.py @@ -73,6 +73,15 @@ class LinearRegressionModel(BaseEstimator, TransformerMixin): + ', '.join(missing_model_features) ) + def _apply_clipping(self, predictions: np.ndarray) -> None: + """Replace in place predictions above max with Q3 and below min with Q1.""" + for i in range(len(predictions)): + # Each limit is optional on its own (SIENTIAPDE-2219) + if 'max' in self.clipping and predictions[i] > self.clipping['max']: + predictions[i] = self.q3_target + elif 'min' in self.clipping and predictions[i] < self.clipping['min']: + predictions[i] = self.q1_target + def create_poly_features(self, input_data: pd.DataFrame, fit: bool = False) -> pd.DataFrame: """ Function to create polynomial features @@ -289,13 +298,8 @@ class LinearRegressionModel(BaseEstimator, TransformerMixin): print(f'X_test shape after removing NaN rows: {x_valid.shape}') valid_pred = self.regr.predict(x_valid[model_features]) - if self.clipping: - for i in range(len(valid_pred)): - if valid_pred[i] > self.clipping['max']: - valid_pred[i] = self.q3_target - elif valid_pred[i] < self.clipping['min']: - valid_pred[i] = self.q1_target + self._apply_clipping(valid_pred) y_pred[row_mask.to_numpy()] = valid_pred return y_pred diff --git a/models/linear_regression/schemas.yaml b/models/linear_regression/schemas.yaml index 32b8f3c..fde6ccb 100644 --- a/models/linear_regression/schemas.yaml +++ b/models/linear_regression/schemas.yaml @@ -23,12 +23,12 @@ components: example: true description: "Enable verbose output during model execution." clipping_max: - type: integer + type: number default: null example: 100 description: "Maximum value for clipping prediction output." clipping_min: - type: integer + type: number default: null example: 0 description: "Minimum value for clipping prediction output." diff --git a/suse-store_DIFF.md b/suse-store_DIFF.md index 9a25e42..0899f40 100644 --- a/suse-store_DIFF.md +++ b/suse-store_DIFF.md @@ -2,8 +2,8 @@ ## Version Change -- **Previous version**: 10 -- **New version**: 11 +- **Previous version**: 11 +- **New version**: 12 ## Model Changes @@ -14,7 +14,7 @@ ### 🔄 Updated Models (2) -- **linear_regression** (version: 1.2.2) +- **linear_regression** (version: 1.2.3) - **xgboost** (version: 1.2.1)