sklearn中SimpleImputer报TypeError: fit()缺少X参数,求解决方案
解决SimpleImputer的TypeError问题
嘿,这个问题我之前也踩过坑!你出错的核心原因是搞混了类方法和实例方法的调用方式。
错误原因分析
SimpleImputer是sklearn中的一个类,你已经正确创建了它的实例imputer,但后面却直接用类名SimpleImputer去调用fit()和transform()方法——这两个是实例方法,必须通过你创建好的imputer实例来调用,而不是类本身。类直接调用的话,Python会认为你缺少了实例这个必填参数(也就是self),所以才会报fit() missing 1 required positional argument: 'X'的错误。
修正后的代码
把代码里的SimpleImputer.fit和SimpleImputer.transform改成用实例imputer调用:
from sklearn.impute import SimpleImputer # 创建SimpleImputer实例 imputer = SimpleImputer(missing_values="NaN", strategy="mean") # 用实例调用fit方法,拟合数据 imputer.fit(X[:,1:3]) # 用同一个实例调用transform方法,填充缺失值 X[:,1:3] = imputer.transform(X[:,1:3])
更简洁的写法
你还可以用fit_transform()一步完成拟合和转换,代码更紧凑:
from sklearn.impute import SimpleImputer imputer = SimpleImputer(missing_values="NaN", strategy="mean") X[:,1:3] = imputer.fit_transform(X[:,1:3])
这样就能正常运行啦,本质就是记住:sklearn的估计器类创建实例后,所有的拟合、转换操作都要基于这个实例来执行~
内容的提问来源于stack exchange,提问作者Kartik Gautam
相关产品推荐
相关产品推荐

