Commit 2778e191 authored by Le Roux Erwan's avatar Le Roux Erwan
Browse files

[refactor] create some subfiles for quantile estimators

parent 14425224
No related merge requests found
Showing with 77 additions and 34 deletions
+77 -34
......@@ -31,35 +31,3 @@ class AbstractQuantileEstimator(AbstractEstimator, ABC):
raise NotImplementedError
class QuantileEstimatorFromMargin(LinearMarginEstimator, AbstractQuantileEstimator):
def __init__(self, dataset: AbstractDataset, margin_model: AbstractTemporalLinearMarginModel, quantile):
super().__init__(dataset=dataset, quantile=quantile, margin_model=margin_model)
@cached_property
def function_from_fit(self) -> AbstractQuantileFunction:
linear_margin_function = super().function_from_fit # type: AbstractMarginFunction
return QuantileFunctionFromMarginFunction(self.dataset.coordinates, linear_margin_function, self.quantile)
class QuantileRegressionEstimator(AbstractQuantileEstimator):
def __init__(self, dataset: AbstractDataset, quantile: float, quantile_regression_model_class: type, **kwargs):
super().__init__(dataset, quantile, **kwargs)
self.quantile_regression_model = quantile_regression_model_class(dataset, quantile) # type: AbstractQuantileRegressionModel
def _fit(self) -> AbstractResultFromModelFit:
return self.quantile_regression_model.fit()
@cached_property
def function_from_fit(self) -> AbstractQuantileFunction:
result_from_model_fit = self.result_from_model_fit # type: ResultFromQuantreg
coefs = result_from_model_fit.coefficients
nb_coefs = len(coefs)
dims = list(range(nb_coefs-1))
idx_to_coef = dict(zip([-1] + dims, coefs))
linear_coef = LinearCoef(idx_to_coef=idx_to_coef)
param_function = LinearParamFunction(dims=dims, coordinates=self.dataset.coordinates.coordinates_values(),
linear_coef=linear_coef)
return QuantileFunctionFromParamFunction(coordinates=self.dataset.coordinates,
param_function=param_function)
from abc import ABC
import numpy as np
from cached_property import cached_property
from extreme_fit.estimator.abstract_estimator import AbstractEstimator
from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
from extreme_fit.estimator.quantile_estimator.abstract_quantile_estimator import AbstractQuantileEstimator
from extreme_fit.function.abstract_quantile_function import AbstractQuantileFunction, \
QuantileFunctionFromMarginFunction, QuantileFunctionFromParamFunction
from extreme_fit.function.margin_function.abstract_margin_function import AbstractMarginFunction
from extreme_fit.function.param_function.linear_coef import LinearCoef
from extreme_fit.function.param_function.param_function import LinearParamFunction
from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
AbstractTemporalLinearMarginModel
from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import LinearMarginModel
from extreme_fit.model.quantile_model.quantile_regression_model import AbstractQuantileRegressionModel
from extreme_fit.model.result_from_model_fit.abstract_result_from_model_fit import AbstractResultFromModelFit
from extreme_fit.model.result_from_model_fit.result_from_quantilreg import ResultFromQuantreg
from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
class QuantileEstimatorFromMargin(LinearMarginEstimator, AbstractQuantileEstimator):
def __init__(self, dataset: AbstractDataset, margin_model: AbstractTemporalLinearMarginModel, quantile):
super().__init__(dataset=dataset, quantile=quantile, margin_model=margin_model)
@cached_property
def function_from_fit(self) -> AbstractQuantileFunction:
linear_margin_function = super().function_from_fit # type: AbstractMarginFunction
return QuantileFunctionFromMarginFunction(self.dataset.coordinates, linear_margin_function, self.quantile)
from abc import ABC
import numpy as np
from cached_property import cached_property
from extreme_fit.estimator.abstract_estimator import AbstractEstimator
from extreme_fit.estimator.margin_estimator.abstract_margin_estimator import LinearMarginEstimator
from extreme_fit.estimator.quantile_estimator.abstract_quantile_estimator import AbstractQuantileEstimator
from extreme_fit.function.abstract_quantile_function import AbstractQuantileFunction, \
QuantileFunctionFromMarginFunction, QuantileFunctionFromParamFunction
from extreme_fit.function.margin_function.abstract_margin_function import AbstractMarginFunction
from extreme_fit.function.param_function.linear_coef import LinearCoef
from extreme_fit.function.param_function.param_function import LinearParamFunction
from extreme_fit.model.margin_model.linear_margin_model.abstract_temporal_linear_margin_model import \
AbstractTemporalLinearMarginModel
from extreme_fit.model.margin_model.linear_margin_model.linear_margin_model import LinearMarginModel
from extreme_fit.model.quantile_model.quantile_regression_model import AbstractQuantileRegressionModel
from extreme_fit.model.result_from_model_fit.abstract_result_from_model_fit import AbstractResultFromModelFit
from extreme_fit.model.result_from_model_fit.result_from_quantilreg import ResultFromQuantreg
from spatio_temporal_dataset.dataset.abstract_dataset import AbstractDataset
class QuantileRegressionEstimator(AbstractQuantileEstimator):
def __init__(self, dataset: AbstractDataset, quantile: float, quantile_regression_model_class: type, **kwargs):
super().__init__(dataset, quantile, **kwargs)
self.quantile_regression_model = quantile_regression_model_class(dataset,
quantile) # type: AbstractQuantileRegressionModel
def _fit(self) -> AbstractResultFromModelFit:
return self.quantile_regression_model.fit()
@cached_property
def function_from_fit(self) -> AbstractQuantileFunction:
result_from_model_fit = self.result_from_model_fit # type: ResultFromQuantreg
coefs = result_from_model_fit.coefficients
nb_coefs = len(coefs)
dims = list(range(nb_coefs - 1))
idx_to_coef = dict(zip([-1] + dims, coefs))
linear_coef = LinearCoef(idx_to_coef=idx_to_coef)
param_function = LinearParamFunction(dims=dims, coordinates=self.dataset.coordinates.coordinates_values(),
linear_coef=linear_coef)
return QuantileFunctionFromParamFunction(coordinates=self.dataset.coordinates,
param_function=param_function)
import unittest
from extreme_fit.estimator.quantile_estimator.abstract_quantile_estimator import QuantileEstimatorFromMargin, \
QuantileRegressionEstimator
from extreme_fit.estimator.quantile_estimator.quantile_estimator_from_margin import QuantileEstimatorFromMargin
from extreme_fit.estimator.quantile_estimator.quantile_estimator_from_regression import QuantileRegressionEstimator
from extreme_fit.model.margin_model.linear_margin_model.temporal_linear_margin_models import StationaryTemporalModel
from spatio_temporal_dataset.dataset.simulation_dataset import MarginDataset
from test.test_utils import load_test_1D_and_2D_spatial_coordinates, load_test_spatiotemporal_coordinates, \
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment