如何在AWS上部署ML推荐系统



我正在涉水ML,并能够采取教程,并得到它的工作为我的需要。这是一个使用TfidfVectorizer和linear_kernel的简单推荐系统。我在如何通过带端点的Sagemaker部署它时遇到了一个问题。

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel 
import json
import csv
with open('data/big_data.json') as json_file:
data = json.load(json_file)
ds = pd.DataFrame(data)
tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')
tfidf_matrix = tf.fit_transform(ds['content'])
cosine_similarities = linear_kernel(tfidf_matrix, tfidf_matrix)
results = {}
for idx, row in ds.iterrows():
similar_indices = cosine_similarities[idx].argsort()[:-100:-1]
similar_items = [(cosine_similarities[idx][i], ds['id'][i]) for i in similar_indices]
results[row['id']] = similar_items[1:]
def item(id):
return ds.loc[ds['id'] == id]['id'].tolist()[0]
def recommend(item_id, num):
print("Recommending " + str(num) + " products similar to " + item(item_id) + "...")
print("-------")
recs = results[item_id][:num]
for rec in recs:
print("Recommended: " + item(rec[1]) + " (score:" + str(rec[0]) + ")")
recommend(item_id='129035', num=5)

作为起点,我不确定tf.fit_transform(ds['content'])的输出是否被认为是模型或linear_kernel(tfidf_matrix, tfidf_matrix)的输出。

我得出的结论是,我不需要通过SageMaker部署它。由于最后的linear_kernel输出是一个Dictionary,所以我可以快速查找ID以查找相关性。

我让它在AWS上使用API Gateway/Lambda, DynamoDB和EC2服务器来收集,处理并将数据插入DynamoDB以进行快速查找。不需要昂贵的SageMaker端点。