Python ImportError: cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘

Python 导入 sklearn 模块错误

我是在做《Python大数据处理》书籍中的例题时导入 sklearn 遇到的错误

这个错误的原因是 sklearn 模块导入的问题,是由于 Python 版本与 sklearn 模块版本不对等的问题

首先是要安装 sklearn 模块

不是完全标准的pip安装,指令如下

pip install -U scikit-learn

在安装的时候可能会在cmd界面遇到如下警告:

WARNING: You are using pip version 21.0.1; however, version 21.1.1 is available.
警告:您使用的是pip版本21.0.1;但是,版本21.1.1可用。 
之后再Python根目录下使用如下指令,更新pip版本以防一些模块更新与Python版本的冲突
python.exe -m pip install --upgrade pip
见到此语句即为安装成功 Successfully installed pip-21.x.x (帖子目前为21.1.1)

接下来是解决核心问题

错误语句:from sklearn.preprocessing import Imputer
ImportError: cannot import name 'Imputer' from 'sklearn.preprocessing' Path
错误原因为 导入模块失败 from sklearn.preprocessing import Imputer

将导入模块的语句改为

from sklearn.impute import SimpleImputer as Imputer

这里就解决了 ImportError 的问题,但是仍然有关于 sklearn 模块的一些语法错误,我将部分我所遇到的问题及解决方法也写在底下

错误代码:imp = Imputer(missing_values='NaN',strategy='mean')
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
ValueError:输入包含NaN、无穷大或对dtype('float64')太大的值。

这里的问题是missing_values不能为NaN了,所以更改为 numpy.nan。

imp=Imputer(missing_values=np.nan, strategy=‘mean’)

之后遇到了transform的错误

错误代码:FData = imp.transform()
TypeError:transform() missing 1 required positional argument: 'X'
TypeError:transform() 缺少1个必需的位置参数:“X”

transform()缺少了必要的参数,只需要将自身改变即可

FData = imp.transform(FData)

示例代码
PyCharm

import pandas as pd
import numpy as np 
from sklearn.impute import SimpleImputer as Imputer

data=pd.read_excel("missing.xlsx")
c=np.array([[1,2,3,4],[4,5,6,np.nan],[5,6,7,8],[9,4,np.nan,8]])
C=pd.DataFrame(c)

fC=C
imp=Imputer(missing_values=np.nan, strategy='mean')
imp.fit(fC)
fC=imp.transform(fC)

imp=Imputer(missing_values=np.nan, strategy='median')
fc=c
imp.fit(fc)
fc=imp.transform(fc)

fD=data[['a','c']]
imp=Imputer(missing_values=np.nan, strategy='most_frequent')
imp.fit(fD)
fD=imp.transform(fD)

你可能感兴趣的:(BUG,python,bug,pip,机器学习)