You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scikit-learn中Imputer类弃用警告问题求助及解决建议

解决Scikit-learn Imputer弃用警告问题

嘿,这个问题很常见,我来帮你快速搞定!

首先看你收到的警告:

DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.

这个警告已经说得很清楚了:Imputer类已经被官方废弃——从scikit-learn 0.20版本开始就不再推荐使用,到0.22版本会被彻底移除,官方建议你改用sklearn.impute.SimpleImputer来处理缺失值。

原代码的问题

你的代码里导入了from sklearn.preprocessing import Imputer,这就是触发警告的根源,咱们只需要替换这部分代码即可,核心逻辑完全不用改。

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('Data.csv')
x = dataset.iloc[:, :-1]
y = dataset.iloc[:, 3]

# 替换废弃的Imputer为SimpleImputer
from sklearn.impute import SimpleImputer
# 参数和原Imputer基本一致,这里用np.nan更规范(原'NaN'也兼容)
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x[:, 1:3])
x[:, 1:3] = imputer.transform(x[:, 1:3])

额外小提示

  • SimpleImputer支持的填充策略和原Imputer一样:'mean'(均值)、'median'(中位数)、'most_frequent'(众数),按需切换就行
  • 如果你用的是较新的scikit-learn版本,甚至可以用fit_transform一步完成拟合和转换,简化代码:
    x[:, 1:3] = imputer.fit_transform(x[:, 1:3])
    

这样修改后,那个烦人的弃用警告就会消失,代码也能和之前一样正常处理缺失数据啦!

内容的提问来源于stack exchange,提问作者Mohammad Khubaib Nasir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:35:28