]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
refactor(qav3): ensure label_weights are L1 normalized
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 3 Jun 2025 15:22:12 +0000 (17:22 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 3 Jun 2025 15:22:12 +0000 (17:22 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py

index 27a48e6c842a7b94ddb04169d9ec2ea86159fb1f..8ad20e9605af19ad51b9320556e9eeb048b04dfd 100644 (file)
@@ -480,6 +480,12 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
             )
             if np_weights.size != n_objectives:
                 raise ValueError("label_weights length must match number of objectives")
+            if np.any(np_weights < 0):
+                raise ValueError("label_weights values must be non-negative")
+            label_weights_sum = np.sum(np_weights)
+            if np.isclose(label_weights_sum, 0):
+                raise ValueError("label_weights sum cannot be zero")
+            np_weights = np_weights / label_weights_sum
             knn_kwargs = {}
             label_knn_metric = self.ft_params.get("label_knn_metric", "euclidean")
             if label_knn_metric == "minkowski" and isinstance(label_p_order, float):