解码泡菜文件

时间:2019-06-16 06:05:54

标签: python arrays scikit-learn decode

我有一个要打开的泡菜文件。我正在使用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 个答案:

答案 0 :(得分:1)

数组值是utf-8编码的字节 要从数组中提取值,您可以尝试如下操作;

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

它为我工作,我得到了这个作为输出: this is after printing the new list created

答案 1 :(得分:0)

注意,这是来自sklearn的警告,而不是来自泡菜的警告。

版本0.20.1中有一些重大更改,这意味着它与某些其他版本不向后兼容。

此错误让您知道正在加载的对象来自旧版本,这意味着它可能与您正在运行的版本不兼容。

您可以阅读changelog并查看更改的内容。