繁体   English   中英

如何从 python 中的 S3 存储桶加载 OLS model 文件 (.pickle)?

[英]How to load an OLS model file (.pickle) from S3 bucket in python?

我想从 S3 加载 OLS 创建的 model 文件 (.pickle)。 这是我的代码:

import boto3
import pandas as pd
import os
import statsmodels.api as sm

s3_r = boto3.resource("s3")
s3_c = boto3.client('s3')

model_file = 's3://mybucketpath/model.pickle'
model = sm.load(model_path)

但它没有用。 我收到一个错误:

OSError: [Errno 22] Invalid argument: 's3:\\mybucketpath\\model.pickle'

更重要的是,如果我从本地路径加载 model 个文件或从 s3 加载 CSV 个文件,我发现我的代码可用,如下所示:

model = sm.load('local_path/model.pickle')
print(model.summary())

df = pd.read_csv('s3:\\mybucketpath/data.csv')
print(df.head())

我不知道如何解决这个问题,也找不到这个错误的在线解决方案

我问了这个问题,现在我想分享我的解决方案。

根据 Kevin S 的说法,问题的原因是“Statsmodels 仅支持本地文件”,因此不可能从在线存储桶加载 model 个文件。

我的解决办法是先下载文件,再本地加载文件。 这是我的代码:

# for example, my model file is saved in this path 'my_bucket/model/model.pickle', and I want to save it as myfirstmodel.pickle in my local machine

bucket_name = 'my_bucket' # your_buckect_name
model_path = 'model/model.pickle' # file_path
saved_name = 'myfirstmodel.pickle'

s3_r = boto3.resource("s3")
s3_r.meta.client.download_file(bucket_name, model_path, saved_name)
model = sm.load(saved_name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM