弃用警告:numpy.core.umath_tests

8
我尝试运行以下Python脚本:
```import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score from sklearn.metrics import confusion_matrix```
但是它给我以下错误。
警告(来自警告模块): “C:\\Users\\Dipali\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py”中的第29行从“numpy.core.umath_tests”导入inner1d DeprecationWarning: numpy.core.umath_tests是内部NumPy模块,不应导入。 在未来的NumPy版本中将删除它。
我需要怎么做?

sklearn 是最新版本吗? - FHTMitchell
print (sklearn.version) 0.19.2
- dipali
1
这不是一个错误,而是一个警告。你的代码将会正常工作。 sklearn开发者(发出警告的包)需要在下个版本中修复这个警告。 - stellasia
1
这是一个已知的问题,Sklearn开发人员已经警告了Numpy团队,并已经放置了弃用警告,以便让Sklearn发布他们的最新版本,该版本将不再使用此核心组件。 - Frayal
2个回答

6
您可以以下面的方式忽略警告:
示例1:
#!/usr/bin/env python -W ignore::DeprecationWarning

示例2:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 

示例3:

import warnings

def fxn():
    warnings.warn("deprecated", DeprecationWarning)

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    fxn()

我尝试了示例2和3,但都没有解决我的问题。 - Ankit Moral

2

好的,这是关于Python 3.x的弃用警告。


由于这只是一个警告,您的代码将正常运行。这不是错误(当代码因优雅退化而停止运行时)。


解决此问题的方法如下:

  1. 我看到你安装了Scikit-Learn的版本0.19.2,你需要获取最新版本。为此,请输入以下命令:
    pip3 install --force-reinstall scikit-learn==0.20rc1
    这将安装最新版本的scikit-learn、scipy和numpy。现在你的弃用警告将不存在。

  2. 虽然你接下来会收到一个新的警告。这次是关于scikit-learn库中名为cloudpickle的文件\sklearn\externals\joblib\externals\cloudpickle\cloudpickle.py。为了克服这个警告,你需要编辑python显示给我们的代码。只需在该文件上执行sudo idle3并编辑以下行:
    import imp
    from imp import find_module
    改为
    import importlib
    然后转到函数find_module并更改行:
    file, path, description = find_module(path)

    file, path, description = importlib.utils.find_spec(path)

这将解决scikit-learn库中的弃用警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接