Проблема с файлом pickle для загрузки после загрузки из корзины S3 с использованием python - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь загрузить свою модель ML в виде файла выбора из корзины S3 и затем загрузить ее для прогнозирования.

import boto3
import io
import pickle

REGION = 'us-east-1'
ACCESS_KEY_ID = ******
SECRET_ACCESS_KEY = ******

'BUCKET_NAME = 'aws-logs-914250087788-us-east-1'
KEY = input_name # file path in S3

s3c = boto3.client(
        's3',
        region_name = REGION,
        aws_access_key_id = ACCESS_KEY_ID,
        aws_secret_access_key = SECRET_ACCESS_KEY
    )
rfModel=s3c.download_file(BUCKET_NAME, model1, 'RF_model.pckl')

#load model and predict

lm = open('RF_model.pckl', 'rb')
clf=pickle.loads(lm)
rf_pred=clf.predict(x)
np.savetxt(output_name1, rf_pred, delimiter=',', fmt='%s')

Но когда я запускаю свой код, возникает следующая ошибка:

TypeError: требуется байтоподобный объект, а не _io.BufferedReader.

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

1 Ответ

0 голосов
/ 10 апреля 2020

Я должен заменить эту часть:

lm = open('RF_model.pckl', 'rb')
clf=pickle.loads(lm)

на эту:

with open('RF_model.pckl', 'rb') as file:
    clf = pickle.load(file)
...