civisanalytics / python-glmnet

A python port of the glmnet package for fitting generalized linear models via penalized maximum likelihood.
Other
262 stars 59 forks source link

Error with sklearn's make_scorer #68

Open fredshu opened 3 years ago

fredshu commented 3 years ago

I have been trying to use F1 = make_scorer(fbeta_score, beta=1, labels = ['1', '2'], average='micro') and F2 as the scoring parameter for logistic regression but glmnet throws the below error. It runs smoothly with scoring = 'accuracy', though. I tried to study the code but couldn't find a way to work with customized scores. Any help would be appreciated.

TypeError Traceback (most recent call last) /home/Dados/Redes_Neurais_II/Dissertacao/Teste pdf 201224.py in 4110 n_splits=n_splits, min_lambda_ratio=min_lambda_ratio, tol=tol, 4111 scoring=scoring, n_jobs=-1, random_state=1, verbose=True) ----> 4112 clf_cv = lgnetcv.fit(x_train, y_train) 4113 print(f'\nMelhor lambda = {clf_cv.lambdabest} para alpha = {alpha}') 4114 # Usa todo o conj de treinamento (inclusive valid) para achar coeficientes finais

~/.local/lib/python3.6/site-packages/glmnet/logistic.py in fit(self, X, y, sample_weight, relative_penalties, groups) 248 self.scoring, 249 n_jobs=self.n_jobs, --> 250 verbose=self.verbose) 251 252 self.cv_meanscore = np.atleast_1d(np.mean(cv_scores, axis=0))

~/.local/lib/python3.6/site-packages/glmnet/util.py in _score_lambda_path(est, X, y, groups, sample_weight, relative_penalties, scoring, n_jobs, verbose) 67 delayed(_fit_and_score)(est, scorer, X, y, sample_weight, relative_penalties, 68 est.lambdapath, train_idx, test_idx) ---> 69 for (train_idx, test_idx) in cv_split) 70 71 return scores

~/.local/lib/python3.6/site-packages/joblib/parallel.py in call(self, iterable) 1015 1016 with self._backend.retrieval_context(): -> 1017 self.retrieve() 1018 # Make sure that we get a last message telling us we are done 1019 elapsed_time = time.time() - self._start_time

~/.local/lib/python3.6/site-packages/joblib/parallel.py in retrieve(self) 907 try: 908 if getattr(self._backend, 'supports_timeout', False): --> 909 self._output.extend(job.get(timeout=self.timeout)) 910 else: 911 self._output.extend(job.get())

/usr/lib/python3.6/multiprocessing/pool.py in get(self, timeout) 642 return self._value 643 else: --> 644 raise self._value 645 646 def _set(self, i, obj):

/usr/lib/python3.6/multiprocessing/pool.py in worker(inqueue, outqueue, initializer, initargs, maxtasks, wrap_exception) 117 job, i, func, args, kwds = task 118 try: --> 119 result = (True, func(*args, **kwds)) 120 except Exception as e: 121 if wrap_exception and func is not _helper_reraises_exception:

~/.local/lib/python3.6/site-packages/joblib/_parallel_backends.py in call(self, *args, kwargs) 606 def call(self, *args, *kwargs): 607 try: --> 608 return self.func(args, kwargs) 609 except KeyboardInterrupt: 610 # We capture the KeyboardInterrupt and reraise it as

~/.local/lib/python3.6/site-packages/joblib/parallel.py in call(self) 254 with parallel_backend(self._backend, n_jobs=self._n_jobs): 255 return [func(*args, **kwargs) --> 256 for func, args, kwargs in self.items] 257 258 def len(self):

~/.local/lib/python3.6/site-packages/joblib/parallel.py in (.0) 254 with parallel_backend(self._backend, n_jobs=self._n_jobs): 255 return [func(*args, **kwargs) --> 256 for func, args, kwargs in self.items] 257 258 def len(self):

~/.local/lib/python3.6/site-packages/glmnet/util.py in _fit_and_score(est, scorer, X, y, sample_weight, relative_penalties, score_lambda_path, train_inx, test_inx) 117 118 lamb = np.clip(score_lambda_path, m.lambdapath[-1], m.lambdapath[0]) --> 119 return scorer(m, X[test_inx, :], y[test_inx], lamb=lamb) 120 121

TypeError: call() got an unexpected keyword argument 'lamb'