在AWS Lambda中重用scikit learn model .pkl

时间:2017-04-12 14:48:38

标签: python amazon-web-services amazon-s3 aws-lambda pickle

我是AWS的初学者,我在计算机上训练了一个带有scikit-learn的RandomForestClassifier,并使用joblib以pkl格式获取我的模型。

现在我想在AWS Lambda中重用这个RandomForest。 由于需要sklearn.externals再次加载我的模型,我已经创建了一个Zip目录,其中包含Numpy,Scipy,sklearn,我的代码以及我的pkl格式的模型。 我将此zip放在S3存储桶中以在Lambda中执行我的代码。

我想知道是否可以使用model.predict()来使用这个模型?我没有找到有关此特定问题的任何文档。

1 个答案:

答案 0 :(得分:1)

实际上,我成功使用了网址。我将我的模型.pkl放在S3 Bucket中,我可以使用urllib2来获取它。

这是我的代码,如果有人遇到同样的问题:

req = urllib2.Request(url=url_model)
f = urllib2.urlopen(req)
model = cPickle.load(f)

仅当文件是公共的时才有效。如果您需要将其设为私有,则可以使用boto3生成预签名URL,如下所示:

url_model = s3.generate_presigned_url(
    ClientMethod='get_object',
    ExpiresIn=1,
    Params={
        'Bucket': 'my-bucket',
        'Key': 'mymodel.pkl'
    }
)