From 8b3a6c49adbed86d8caf6132cc78fe2eeb3ca0d4 Mon Sep 17 00:00:00 2001 From: Charly LAMOTHE <lamothe.c@intlocal.univ-amu.fr> Date: Fri, 8 Nov 2019 11:15:37 +0100 Subject: [PATCH] Use OMP to compute the prediction instead of doing it manually (same results) --- code/bolsonaro/models/omp_forest_regressor.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/bolsonaro/models/omp_forest_regressor.py b/code/bolsonaro/models/omp_forest_regressor.py index 3e95d12..b4896cd 100644 --- a/code/bolsonaro/models/omp_forest_regressor.py +++ b/code/bolsonaro/models/omp_forest_regressor.py @@ -38,7 +38,8 @@ class OmpForestRegressor(BaseEstimator): def fit(self, X_forest, y_forest, X_omp, y_omp): self._forest = self._train_forest(X_forest, y_forest) - self._weights = self._extract_subforest(X_omp, y_omp) + self._omp = self._extract_subforest(X_omp, y_omp) + self._weights = self._omp.coef_ return self def score_regressor(self, X, y): @@ -56,8 +57,8 @@ class OmpForestRegressor(BaseEstimator): if self._models_parameters.normalize_D: D /= self._forest_norms - # TODO: use self._models_parameters.normalize_weights here - predictions = D @ self._weights + # TODO: use self._models_parameters.normalize_weights here? + predictions = self._omp.predict(D) return predictions @@ -109,10 +110,7 @@ class OmpForestRegressor(BaseEstimator): fit_intercept=False, normalize=False) self._logger.debug("Apply orthogonal maching pursuit on forest for {} extracted trees." .format(self._models_parameters.extracted_forest_size)) - omp.fit(D, y) - weights = omp.coef_ - # question: why not to use directly the omp estimator instead of bypassing it using the coefs? - return weights + return omp.fit(D, y) def _forest_prediction(self, X): return np.array([tree.predict(X) for tree in self._forest]).T -- GitLab