Source code for funclp.modules.Estimator_LP.Estimator

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Date          : 2025-12-19
# Author        : Lancelot PINCET
# GitHub        : https://github.com/LancelotPincet
# Library       : funcLP
# Module        : Estimator

"""
Class defining an estimator function for fitting data.
"""



# %% Libraries
from corelp import prop, selfkwargs
from funclp import CudaReference
from abc import ABC, abstractmethod



# %% Class
[docs] class Estimator(ABC, CudaReference) : ''' Class defining an estimator function for fitting data. Parameters ---------- distribution : Distribution Distribution instance. kwargs : dict Attributes to change. Attributes ---------- deviance : method How well the model fits the data loss : method Loss for gradient descent observed : method Observed Hessian (negative second derivative) fisher : method Expected Hessian (Fisher information) ''' @prop() def name(self) : return self.__class__.__name__ def __init__(self, distribution=None, **kwargs) : self.distribution = distribution self.distribution.cuda_reference = self selfkwargs(self, kwargs) #ABC
[docs] @abstractmethod def deviance(self, raw_data, model_data, weights=1, **kwargs) : pass
@property @abstractmethod def cpukernel_deviance(self, raw_data, model_data, weights=1, **kwargs) : pass @property @abstractmethod def gpukernel_deviance(self, raw_data, model_data, weights=1, **kwargs) : pass
[docs] @abstractmethod def loss(self, raw_data, model_data, weights=1, **kwargs) : pass
@property @abstractmethod def cpukernel_loss(self, raw_data, model_data, weights=1, **kwargs) : pass @property @abstractmethod def gpukernel_loss(self, raw_data, model_data, weights=1, **kwargs) : pass
[docs] @abstractmethod def observed(self, raw_data, model_data, weights=1, **kwargs) : pass
@property @abstractmethod def cpukernel_observed(self, raw_data, model_data, weights=1, **kwargs) : pass @property @abstractmethod def gpukernel_observed(self, raw_data, model_data, weights=1, **kwargs) : pass
[docs] @abstractmethod def fisher(self, raw_data, model_data, weights=1, **kwargs) : pass
@property @abstractmethod def cpukernel_fisher(self, raw_data, model_data, weights=1, **kwargs) : pass @property @abstractmethod def gpukernel_fisher(self, raw_data, model_data, weights=1, **kwargs) : pass
# %% Test function run if __name__ == "__main__": from corelp import test test(__file__)