Расшифровка маринованного файла - PullRequest
0 голосов
/ 16 июня 2019

У меня есть файл рассола, который я пытаюсь открыть. Я использую python3.

import pickle
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
age = pickle.loads(open('/home/ubuntu/Downloads/agele.cpickle','rb').read()

В последней строке выдается предупреждение:

usr/local/lib/python3.6/dist-packages/sklearn/base.py:251: UserWarning: Trying to unpickle estimator LabelEncoder from version 0.18 when using version 0.20.1. This might lead to breaking code or invalid results. Use at your own risk.
  UserWarning)

age.classes_

печатает массив следующим образом:

array([b'0_2', b'15_20', b'25_32', b'38_43', b'48_53', b'4_6', b'60_inf',
       b'8_13'], dtype='|S6')

Я пытаюсь извлечь значения из этого массива. Ниже были следующие ошибки, которые я получаю.

le.inverse_transform(age)

sklearn.exceptions.NotFittedError: This LabelEncoder instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
ag=le.fit_transform(age)
ValueError: bad input shape ()

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Значения массива представляют собой байты в кодировке utf-8. Чтобы извлечь значения из массива, вы можете попробовать что-то вроде этого;

age_classes = []
for i in age.classes_ :
    age_classes.append(i.decode('utf-8'))

Это сработало для меня, и я получил это как вывод: this is after printing the new list created

0 голосов
/ 16 июня 2019

Обратите внимание, это предупреждение от sklearn, а не от рассола.

Произошло несколько критических изменений в версии 0.20.1, что означает, что она не обратно совместима с некоторыми другими версиями.

Эта ошибка говорит о том, что загружаемый вами объект относится к более старой версии, что означает, что он может быть несовместим с используемой версией.

вы можете прочитать список изменений и посмотреть, что изменилось.

...