[英]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.