部署含SimpleImputer的scikit-learn训练管道报错:SimpleImputer无_fit_dtype属性
解决SimpleImputer缺失
_fit_dtype属性的问题 这个错误几乎都是训练环境与生产环境的scikit-learn版本不匹配导致的:你训练模型用的是较高版本的sklearn,而生产环境部署的是更低版本——_fit_dtype是sklearn较新版本中SimpleImputer新增的内部属性,旧版本里没有这个字段,加载高版本训练的模型时就会触发报错。
解决步骤:
- 先确认训练环境的sklearn版本:在训练机器上运行
pip show scikit-learn,或者在Python脚本里执行import sklearn; print(sklearn.__version__) - 在生产环境安装完全相同的版本,比如版本是1.2.2,就执行
pip install scikit-learn==1.2.2 - 如果生产环境因为依赖限制无法升级版本,就换在生产环境对应的低版本sklearn下重新训练整个模型管道,再部署新训练的模型
- 同时检查模型保存加载方式:必须用sklearn官方推荐的
joblib或者pickle,不要用第三方序列化工具,加载时也要对应使用joblib.load()或pickle.load()
内容的提问来源于stack exchange,提问作者Jakob
相关产品推荐
相关产品推荐

