Prune丶 2019-12-15 00:14 采纳率: 33.3%
浏览 9156
已采纳

Python全局环境下sklearn包中缺失Imputer函数

系统win10 64位,python版本3.7.4。

全局环境下,在我输入下载sklearn包的代码后,显示结果如下,包已经安装:

pip install sklearn
Requirement already satisfied: sklearn in e:\python\lib\site-packages (0.0)
Requirement already satisfied: scikit-learn in e:\python\lib\site-packages (from sklearn) (0.22)
Requirement already satisfied: numpy>=1.11.0 in e:\python\lib\site-packages (from scikit-learn->sklearn) (1.17.4)
Requirement already satisfied: scipy>=0.17.0 in e:\python\lib\site-packages (from scikit-learn->sklearn) (1.3.3)
Requirement already satisfied: joblib>=0.11 in e:\python\lib\site-packages (from scikit-learn->sklearn) (0.14.1)

然而在使用sklearn中的Imputer函数时,会出现报错:

>>> import numpy as np
>>> import sklearn
>>> from sklearn import preprocessing
>>> from sklearn.preprocessing import Imputer
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'Imputer' from 'sklearn.preprocessing' (E:\python\lib\site-packages\sklearn\preprocessing\__init__.py)

利用dir()查看包内的函数,发现没有Imputer:

>>> dir(sklearn.preprocessing) 
['Binarizer', 'FunctionTransformer', 'KBinsDiscretizer', 'KernelCenterer', 'LabelBinarizer', 'LabelEncoder', 'MaxAbsScaler', 'MinMaxScaler', 'MultiLabelBinarizer', 'Normalizer', 'OneHotEncoder', 'OrdinalEncoder', 'PolynomialFeatures', 'PowerTransformer', 'QuantileTransformer', 'RobustScaler', 'StandardScaler', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_csr_polynomial_expansion', '_data', '_discretization', '_encoders', '_function_transformer', '_label', 'add_dummy_feature', 'binarize', 'label_binarize', 'maxabs_scale', 'minmax_scale', 'normalize', 'power_transform', 'quantile_transform', 'robust_scale', 'scale']

但是在conda的base环境下,陆续安装numpy、scipy、matplotlib后,安装
scikit-learn包,就可以使用这个函数了。

我寻找了很久的解决方案,网上说的路径和Imputer相同的情况没有发生,请问大佬们这究竟是怎么回事儿啊

  • 写回答

2条回答 默认 最新

  • 家在田塍 2019-12-16 00:39
    关注

    你这个问题,大概率是你安装的numpy不包含mkl链接库(intel的math kernel library),你可以先卸载numpy,然后到
    https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载numpy+mkl版本的numpy的whl文件,然后通过你的pip离线安装此版本numpy,
    这样再重新安装一遍其他的几个库,应该就会包含所有函数包了。而anoconda已经集成了各种科学计算包,所以在anoconda下就没啥问题。
    试试吧,good luck!

    ——————————————————————
    追答,后来我发现,最新版0.22版本sklearn,imputer不在preprocessing里了,而是在sklearn.impute里,除了SimpleImputer外,还增加了KNNImputer。另外还有IterativeImputer用法,可以参考这个 https://scikit-learn.org/stable/modules/impute.html#impute 以及 https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing 我猜测你的pip安装的就是这个版本,而anoconda里面是旧版本吧,你可以研究一下,希望这个能帮到你。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误