升级的sklearn使我以前的onehotencoder无法转换

时间:2020-03-11 19:08:23

标签: scikit-learn

我将以前的ml模型中的一个存储到pickle中,并计划稍后将其用于生产。

一切正常运行了一段时间。几个月后,我升级了sklearn,现在加载它,得到了这个警告...

> c:\programdata\miniconda3\lib\site-packages\sklearn\base.py:318:
> UserWarning: Trying to unpickle estimator OneHotEncoder from version
> 0.20.1 when using version 0.22.2.post1. This might lead to breaking code or invalid results. Use at your own risk.   UserWarning)

当我将其用于转换时,出现此错误:

model_pipeline["ohe"].transform(df)

错误说:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-72436472fbb4> in <module>
----> 1 model_pipeline["ohe"].transform(df_merge[['CATEGORY']][:])

c:\programdata\miniconda3\lib\site-packages\sklearn\preprocessing\_encoders.py in transform(self, X)
    392         n_samples, n_features = X_int.shape
    393 
--> 394         if self.drop is not None:
    395             to_drop = self.drop_idx_.reshape(1, -1)
    396 

AttributeError: 'OneHotEncoder' object has no attribute 'drop'

这是对模型管道进行非常昂贵的培训。我有什么需要修正这个模型管道而无需重新培训所有内容的吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题。就我而言,这是因为尝试加载和使用我使用scikit-learn的早期版本创建的编码器。重新创建编码器并保存后,加载后的问题消失了。