scikit-learn.impute 不会使用 Machine Learning AZ 教程中的代码通过 Spyder 从 Imputer 导入

Vyg*_*has 5 machine-learning spyder scikit-learn python-3.7

我从机器学习 AZ™: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 np
import matplotlib.pyplot as plt
import pandas as pd



# Importing the dataset
dataset = pd.read_csv('Data.csv')
X = pd.DataFrame(dataset.iloc[:, :-1].values)
y = pd.DataFrame(dataset.iloc[:, 3].values)

# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
Run Code Online (Sandbox Code Playgroud)

par*_*rsa 9

它永久地从预处理转移到估算库,你可以这样称呼它:

from sklearn.impute import SimpleImputer
Run Code Online (Sandbox Code Playgroud)

完全一样。如果它不起作用,您应该使用pip卸载它然后重新安装它第一次可能无法正确安装

它不再有轴,但您可以使用 Pandas 数据帧标题轻松处理它,如下所示:

si=SimpleImputer()
si.fit([dataset["headername"]])
Run Code Online (Sandbox Code Playgroud)

有一个策略参数可让您在“mean”、“most_frequent”、“median”和“constant”之间进行选择

但还有另一个我更喜欢的输入器:

from sklearn.impute import KNNImputer
Run Code Online (Sandbox Code Playgroud)

这将用 k 个最近邻的平均值来估算缺失值