我从《机器学习A-Z™:实操Python与R数据科学》教程课程中逐字复制了代码,但我的代码无法运行。我使用的是Python 3.7,并且已经在我的环境中安装了scikit-learn包。然而它仍然无法工作,我尝试寻找包含sklearn的包,但似乎什么也没找到。它给出了以下错误。
我通过Anaconda运行我的环境。
ImportError: cannot import name 'Imputer' from 'sklearn.preprocessing' (C:\Users\vygan\.conda\envs\env\lib\site-packages\sklearn\preprocessing\__init__.py)
import numpy as npimport matplotlib.pyplot as pltimport pandas as pd# 导入数据集dataset = pd.read_csv('Data.csv')X = pd.DataFrame(dataset.iloc[:, :-1].values)y = pd.DataFrame(dataset.iloc[:, 3].values)# 处理缺失数据from sklearn.preprocessing import Imputerimputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)imputer = imputer.fit(X[:, 1:3])X[:, 1:3] = imputer.transform(X[:, 1:3])
回答:
它已经从preprocessing库永久移至impute库,你可以这样调用它:
from sklearn.impute import SimpleImputer
它大致相同。如果仍然无法工作,你应该使用pip卸载然后重新安装它,可能是因为第一次安装时没有正确安装。
它不再有axis参数,但你可以用pandas数据框的标题轻松处理,如下所示:
si=SimpleImputer()si.fit([dataset["headername"]])
有一个策略参数,可供选择”mean”(均值)、”most_frequent”(最常见)、”median”(中位数)和”constant”(常数)。
但我更喜欢另一个填补器:
from sklearn.impute import KNNImputer
它将使用k个最近邻的平均值来填补缺失值。