Разрыхление склеена модели сохранено в Python2 до Python3 - PullRequest
0 голосов
/ 19 января 2020

Я сохранил и засолил объект в Python2. Объектом типа является RandomForestClassifier sklearn. Я пытаюсь распаковать его в Python3, но получаю сообщение об ошибке:

with open(model_name, "rb") as model_file:
    model = pickle.load(model_file, encoding='latin1') 

Но я получаю сообщение об ошибке:

~/.local/lib/python3.6/site-packages/dill/dill.py in _load_type(name)
    544 
    545 def _load_type(name):
--> 546     return _reverse_typemap[name]
    547 
    548 def _create_type(typeobj, *args):

KeyError: 'ObjectType'

Я попытался исправить следующее:

def convert(old_pkl):
    """
    Convert a Python 2 pickle to Python 3
    """
    # Make a name for the new pickle
    new_pkl = os.path.splitext(os.path.basename(old_pkl))[0]+"_p3.pkl"

    # Convert Python 2 "ObjectType" to Python 3 object
    dill._dill._reverse_typemap["ObjectType"] = object

    # Open the pickle using latin1 encoding
    with open(old_pkl, "rb") as f:
        loaded = pickle.load(f, encoding="latin1")

    # Re-save as Python 3 pickle
    with open(new_pkl, "wb") as outfile:
        pickle.dump(loaded, outfile)

convert(classifier_model_name)

Но получил ту же ошибку на линии loaded = pickle.load(f, encoding="latin1")

Как я могу это исправить?

Спасибо

...