消除scikit-learn的警告

Chr*_*eck 54 python warnings scikit-learn

我想在教学时忽略所有包装中的警告,但是scikit-learn似乎可以解决使用warnings包来控制它的问题.例如:

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    from sklearn import preprocessing

/usr/local/lib/python3.5/site-packages/sklearn/utils/fixes.py:66: DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() instead
  if 'order' in inspect.getargspec(np.copy)[0]:
/usr/local/lib/python3.5/site-packages/sklearn/utils/fixes.py:358: DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() instead
  if 'exist_ok' in inspect.getargspec(os.makedirs).args:
Run Code Online (Sandbox Code Playgroud)

我是否错误地使用了这个模块,或者是否正在做一些不应该做的事情?

jos*_*805 68

它让我极为恼火,sklearn 强制警告.

我开始在main.py的顶部使用它:

def warn(*args, **kwargs):
    pass
import warnings
warnings.warn = warn

#... import sklearn stuff...
Run Code Online (Sandbox Code Playgroud)

  • 奇迹般有效。谢谢! (5认同)
  • 进行并行 GridSearchCV 时怎么样? (3认同)
  • 好的。唯一的小问题是您实际上无法在自己的代码中使用警告 (2认同)
  • 对我不起作用。特别是,我收到了无法消除的 FitFailedWarning 消息。我正在做 GridSearchCV,我很清楚有些组合是不允许的,我不想被告知这一点,因为对于其他组合来说,这个项目非常有用。 (2认同)

Zak*_*kum 57

他们在2013年改变了警告政策.您可以使用以下内容忽略警告(也是特定类型):

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
Run Code Online (Sandbox Code Playgroud)

//编辑:在下面的评论中,Reed Richards指出,the filterwarnings call needs to be in the file that calls the function that gives the warning. 我希望这可以帮助那些遇到此解决方案问题的人.

  • 我试了但是没用.我的编码环境是anaconda python 3.4 windows 10 (10认同)
  • 似乎 filterwarnings 调用需要在调用发出警告的函数的文件中。在顶层调用它对我没有任何作用,但是当我把它放在给出警告的文件中时。并且应该澄清的是,您需要导入 sklearn 从其定义的异常集中抛出的任何警告。 (5认同)
  • 我喜欢这个,因为它清晰,直白,而且不那么hacky,但它对我不起作用.我尝试将它放在导入的底部,在导入的顶部,什么都没有.我也不想压制所有警告 (3认同)