FutureWarning get_params от scikit-learn - PullRequest
       37

FutureWarning get_params от scikit-learn

0 голосов
/ 04 августа 2020

Я получаю предупреждение

File "[...]\lib\threading.py", line 890, in _bootstrap
  self._bootstrap_inner()
File "[...]\lib\threading.py", line 932, in _bootstrap_inner
  self.run()
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 216, in run
  self._on_run()
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydev_bundle\pydev_console_commands.py", line 30, in _on_run
  values.append(pydevd_thrift.var_to_struct(var_obj, name, evaluate_full_value=True))
File "C:\Program Files\JetBrains\PyCharm 2019.1.3\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_thrift.py", line 305, in var_to_struct
  value = format % v
File "[...]\lib\site-packages\sklearn\base.py", line 263, in __repr__
  repr_ = pp.pformat(self)
File "[...]\lib\pprint.py", line 153, in pformat
  self._format(object, sio, 0, 0, {}, 0)
File "[...]\lib\pprint.py", line 170, in _format
  rep = self._repr(object, context, level)
File "[...]\lib\pprint.py", line 404, in _repr
  repr, readable, recursive = self.format(object, context.copy(),
File "[...]\lib\site-packages\sklearn\utils\_pprint.py", line 169, in format
  return _safe_repr(object, context, maxlevels, level,
File "[...]\lib\site-packages\sklearn\utils\_pprint.py", line 415, in _safe_repr
  params = object.get_params(deep=False)
File "[...]\lib\site-packages\sklearn\base.py", line 193, in get_params
  warnings.warn('From version 0.24, get_params will raise an '
File "[...]\lib\warnings.py", line 109, in _showwarnmsg
  sw(msg.message, msg.category, msg.filename, msg.lineno,
File "<input>", line 59, in warn_with_traceback
[...]\lib\site-packages\sklearn\base.py:193: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.
warnings.warn('From version 0.24, get_params will raise an '

при попытке использовать sklearn. Я не знаю, как это решить. Очевидно, это небольшая информация для вас, но я даже не знаю, с чего начать отслеживать проблему.

Единственное, что я могу добавить, это то, что это происходит, когда я пытаюсь создать экземпляр класса, который я написал который наследуется от CalibratedClassifierCV .

Как я могу подойти к этому?

1 Ответ

0 голосов
/ 04 августа 2020

Думаю, мне повезло найти ответ. Как описано в документации scikit-learn , инициализация должна выглядеть как

def __init__(self, param1=1, param2=2):
    self.param1 = param1
    self.param2 = param2

Ошибка, которую я сделал, заключалась в том, чтобы написать что-то вроде

def __init__(self, param1=1, param2=2):
    self.param1 = param1
    self.param2_ = param2

Обратите внимание на подчеркивание. Этого следует избегать, потому что это приведет к путанице с методами set_params и get_params. В самом деле, мое предупреждение возникло из более позднего. имя, оканчивающееся на нижнее подчеркивание, например, коэффициенты некоторой регрессионной оценки будут сохранены в атрибуте coef_ после вызова подгонки.

Предполагается, что предполагаемые атрибуты будут переопределены, когда вы вызовете подгонку во второй раз.

...