Skip to content

readme examples does not work because Inferencer.pre_fit() got an unexpected keyword argument (offset) #34

@timothee-clemessy

Description

@timothee-clemessy

Trying to run the examples from the readme :

from yaglm.toy_data import sample_sparse_lin_reg from yaglm.GlmTuned import GlmCV, GlmTrainMetric from yaglm.config.loss import Huber from yaglm.config.penalty import Lasso, GroupLasso from yaglm.config.flavor import Adaptive, NonConvex from yaglm.metrics.info_criteria import InfoCriteria from yaglm.infer.Inferencer import Inferencer from yaglm.infer.lin_reg_noise_var import ViaRidge # sample sparse linear regression data X, y, _ = sample_sparse_lin_reg(n_samples=100, n_features=10) # fit a lasso penalty tuned via cross-validation with the 1se rule GlmCV(loss='lin_reg', penalty=Lasso(), # specify penalty with config object select_rule='1se' ).fit(X, y) # fit an adaptive lasso tuned via cross-validation # initialized with a lasso tuned with cross-validation GlmCV(loss='lin_reg', penalty=Lasso(flavor=Adaptive()), initializer='default' ).fit(X, y) # fit an adaptive lasso and tuned via EBIC # estimate the noise variance via a ridge-regression method GlmTrainMetric(loss='lin_reg', penalty=Lasso(flavor=Adaptive()), inferencer=Inferencer(scale=ViaRidge()), # noise variance estimator scorer=InfoCriteria(crit='ebic') # Info criteria ).fit(X, y) 

raises the following errors :

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In [11], line 37 25 GlmCV(loss='lin_reg', 26 penalty=Lasso(flavor=Adaptive()), 27 initializer='default' 28 ).fit(X, y) 30 # fit an adaptive lasso and tuned via EBIC 31 # estimate the noise variance via a ridge-regression method 32 GlmTrainMetric(loss='lin_reg', 33 penalty=Lasso(flavor=Adaptive()), 34 35 inferencer=Inferencer(scale=ViaRidge()), # noise variance estimator 36 scorer=InfoCriteria(crit='ebic') # Info criteria ---> 37 ).fit(X, y) File ~/opt/anaconda3/envs/automated_reliability_tests/lib/python3.10/site-packages/yaglm-_0.3.3_-py3.10.egg/yaglm/GlmTuned.py:341, in GlmTrainMetric.fit(self, X, y, sample_weight, offsets) 334 start_time = time() 336 ############################################## 337 # setup, preprocess, and prefitting routines # 338 ############################################## 339 pro_data, raw_data, pre_pro_out, \ 340 configs, solver, init_data, inferencer = \ --> 341 self.setup_and_prefit(X=X, y=y, 342 sample_weight=sample_weight, 343 offsets=offsets) 345 # store inferencer 346 self.inferencer_ = inferencer File ~/opt/anaconda3/envs/automated_reliability_tests/lib/python3.10/site-packages/yaglm-_0.3.3_-py3.10.egg/yaglm/base.py:429, in BaseGlm.setup_and_prefit(self, X, y, sample_weight, offsets) 425 raw_data = {'X': X, 'y': y, 426 'sample_weight': sample_weight, 'offsets': offsets} 428 # run any prefitting inference --> 429 inferencer = self.run_prefit_inference(**raw_data) 431 # preproceess X, y 432 pro_data, pre_pro_out = self.preprocess(**raw_data, copy=True) File ~/opt/anaconda3/envs/automated_reliability_tests/lib/python3.10/site-packages/yaglm-_0.3.3_-py3.10.egg/yaglm/base.py:718, in BaseGlm.run_prefit_inference(self, X, y, sample_weight, offsets) 715 if self.inferencer is not None: 716 # TODO: do we want to do a copy here? 717 inferencer = deepcopy(self.inferencer) --> 718 inferencer.pre_fit(estimator=self, X=X, y=y, 719 sample_weight=sample_weight, 720 offsets=offsets) 721 return inferencer 723 else: TypeError: Inferencer.pre_fit() got an unexpected keyword argument 'offset 

Indeed, l718 in base.py a call to pre_fit of an inferencer is passed using an offset argument :

 inferencer.pre_fit(estimator=self, X=X, y=y, sample_weight=sample_weight, offsets=offsets) 

while inferencer pre_fit methods does not accept offsets parameter yet according to l45 in Inferencer.py

def pre_fit(self, estimator, X, y, sample_weight=None): 

I see that a commit adding offset have been merged recently so I guess it is related.

I hope it helps,

Thanks a lot for the package and I hope the project goes on !

Best regards,

Timothée

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions