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

Scikit learn 升级的sklearn使我以前的onehotencoder无法转换,scikit-learn,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

我将以前的一个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'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
---->1模型_管道[“ohe”]。转换(df_合并[['CATEGORY']][:])
c:\programdata\miniconda3\lib\site packages\sklearn\preprocessing\\u encoders.py in transform(self,X)
392个n_样本,n_特征=X_int.shape
393
-->394如果self.drop不是None:
395 to_drop=自降_idx_ux重塑(1,-1)
396
AttributeError:“OneHotEncoder”对象没有属性“drop”

这是一个培训费用非常昂贵的模型管道。我是否可以在不进行任何再培训的情况下修复此模型管道?谢谢

我也遇到了同样的问题。在我的例子中,这是因为尝试加载和使用我用先前版本的scikit learn创建的编码器。当我重新创建编码器并保存时,加载后的问题消失了