在jupyter中运行sklearn load_iris出现np.int弃用警告如何解决
警告触发原因
这个警告是依赖库版本不兼容导致的,和你自己编写的代码无关:
- 你本地安装的NumPy版本≥1.20,该版本正式废弃了
np.int这类别名,要求开发者改用原生int,或者np.int32/np.int64这类明确精度的类型,使用废弃别名时就会抛出该弃用警告。 - 你调用的scikit-learn版本较旧,旧版本的sklearn内部源码多处使用了已废弃的
np.int写法,你调用sklearn的load_iris接口时,触发了sklearn内部代码的警告。
可行解决方法
方案1:升级scikit-learn到适配版本(最推荐)
升级scikit-learn到0.24.2及以上的稳定版本,新版本已经修复了内部的废弃别名调用,从根源解决问题。对应升级命令:
pip安装:pip install -U scikit-learn
conda安装:conda update scikit-learn方案2:降级NumPy到兼容版本
如果你需要保留当前的旧版scikit-learn,可以将NumPy降级到1.19.5版本,该版本尚未废弃np.int别名,不会触发警告。降级命令:pip install numpy==1.19.5方案3:临时屏蔽弃用警告
如果不想改动现有依赖版本,仅希望警告不干扰运行输出,可以在代码开头添加屏蔽规则,仅隐藏警告不修改实际逻辑:
import warnings warnings.filterwarnings("ignore", message="`np.int` is a deprecated alias")
该方案仅适合临时调试使用,不建议长期使用。
内容的提问来源于stack exchange,提问作者Wreza Shafaghi
相关产品推荐
相关产品推荐

