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
相关产品推荐
相关产品推荐

