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)