synthetic_data_release icon indicating copy to clipboard operation
synthetic_data_release copied to clipboard

Error during unit testing

Open LMeynent opened this issue 3 years ago • 1 comments

Hello,

With the same setup as described in #3 , I encounter another error during unit testing:

======================================================================
ERROR: test_logreg (tests.test_attacks.TestAttacks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/leo/Documents/GitHub/synthetic_data_release/tests/test_attacks.py", line 144, in test_logreg
    Attack.train(self.synA, self.labelsSynA)
  File "/Users/leo/Documents/GitHub/synthetic_data_release/synthetic_data/privacy_attacks/membership_inference.py", line 76, in train
    self.AttackClassifier.fit(synA, labels)
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py", line 1601, in fit
    for class_, warm_start_coef_ in zip(classes_, warm_start_coef))
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/parallel.py", line 1041, in __call__
    if self.dispatch_one_batch(iterator):
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/parallel.py", line 859, in dispatch_one_batch
    self._dispatch(tasks)
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/parallel.py", line 777, in _dispatch
    job = self._backend.apply_async(batch, callback=cb)
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 208, in apply_async
    result = ImmediateResult(func)
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 572, in __init__
    self.results = batch()
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/parallel.py", line 263, in __call__
    for func, args, kwargs in self.items]
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/joblib/parallel.py", line 263, in <listcomp>
    for func, args, kwargs in self.items]
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py", line 940, in _logistic_regression_path
    extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)
  File "/Users/leo/opt/anaconda3/envs/spring/lib/python3.7/site-packages/sklearn/utils/optimize.py", line 243, in _check_optimize_result
    ).format(solver, result.status, result.message.decode("latin1"))
AttributeError: 'str' object has no attribute 'decode'

LMeynent avatar Mar 15 '21 14:03 LMeynent

Update: this error seems to come from scipy update 1.6 that was released in December 2020. Putting scipy<1.6.0,>=1.3.2 in the requirements.txt fixes this, but I do not know whether this represents a durable solution.

Two warnings remain during unit testing of LogReg:

STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.

Increase the number of iterations (max_iter) or scale the data as shown in:
    https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)

These can be solved by adding the max_iter=1000 argument in the LogisticRegression() during attack construction

LMeynent avatar Mar 16 '21 16:03 LMeynent