使用新的 xgboost 版本打开旧的 xgboost 泡菜'XGBClassifier'对象没有属性'kwargs'



我在腌制了一些泡菜对象时使用了XGBoost版本0.6。现在,我升级到0.82版,当我试图取消我得到的旧型号时:

attributeError:'xgbClassifier'对象没有属性'kwargs'

我真的很想在不训练它们的情况下使用这些模型,有什么方法可以打开这些泡菜吗?

新的Xgboost要求对象具有"夸尔格"属性,而旧模型则没有。解决此问题的一种方法是降级到旧的Xgboost版本,打开它们,将它们添加到每个模型中。Kwargs=无,然后再保存,它们现在应该起作用...

另一个解决方法是破解泡菜文件。您将作为字符串加载泡菜,添加所需的属性,然后加载泡菜:

import re
xg_str = open('path_to_old_model.pkl').read()
kwargs_value= "kwargs'np8nNsS'"
new_xgboost = re.sub('colsample_bylevel', kwargs_value+"""colsample_bylevel""", xg_str)
new_model = pkl.loads(new_xgboost)

这将"无"作为模型的self.kwargs添加。REGEX通过在模型" ColSample_bylevel"中搜索已知属性,然后在其另一个属性之前添加。

要查看腌制属性如何创建具有某些属性的任何类,并将pkl.dumps应用于实例。如果这是一个简短的课程,那么阅读将很容易阅读,这就是我得到的" Kwargs' np8 nnss'"的意思是" kwargs = none"。

为我工作!我敢肯定,这可以帮助解决类似的向后兼容性问题,而不是与此特定属性有关。

最新更新