【问题标题】:How to Deploy ML Recommender System on AWS如何在 AWS 上部署 ML 推荐系统
【发布时间】:2021-12-10 02:08:24
【问题描述】:

我正在涉足 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) 的输出。

【问题讨论】:

    标签: machine-learning amazon-sagemaker tfidfvectorizer


    【解决方案1】:

    我得出的结论是,我不需要通过 SageMaker 进行部署。由于最终的 linear_kernel 输出是字典,因此我可以进行快速 ID 查找以找到相关性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2014-06-10
      • 2011-09-12
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多