Fastai 在协作学习模型上的预测

Fastai predict on collaboative learning model

提问人:Shekar Tippur 提问时间:3/28/2021 最后编辑:DharmanShekar Tippur 更新时间:5/19/2023 访问量:1334

问:

我有一个快速 ai 协同过滤模型。我想在这个模型上预测一个新元组。 我在使用预测功能时遇到了问题

从他们的文档中,

Signature: learn.predict(item, rm_type_tfms=None, with_input=False)
Docstring: Prediction on `item`, fully decoded, loss function decoded and probabilities
File:      ~/playground/virtualenv/lib/python3.8/site-packages/fastai/learner.py
Type:      method

如何定义我需要传递的项目。假设对于一个 movielens 数据集,对于数据集中已经有的用户,我们想推荐一组电影,我们如何传递 userID?

我试图在这里遵循某种答案 - https://forums.fast.ai/t/making-predictions-with-collaborative-filtering/3900

学习.predict( [np.array([3])] )

我似乎收到一个错误:TypeError: list indices must be integers or slices, not list

机器学习 PyTorch Fast-AI

评论


答:

2赞 ants 5/15/2021 #1

我认为这会有所帮助:
https://medium.com/@igorirailean/a-recommender-system-using-fastai-in-google-colab-110d363d422f

该文档还包含以下信息:

dl = learn.dls.test_dl(test_df)
learn.get_preds(dl=dl)

它帮助了我。

0赞 Silver Light 5/19/2023 #2

您需要使用要预测的数据集创建一个,并将其传递给该方法。假设我们想预测 id 为 user id 的电影的评级:DataLoaderget_preds[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]1000

user_id = 1000
# you can substitute this with list of all movies user did not rate yet, to get full predictions
movies_to_predict_for = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

# create a dataframe with pairs [user_id, movie_id]
df = pd.DataFrame({
    'user': [user_id] * len(movies_to_predict_for),
    'item': movies_to_predict_for
})

# covert it to DataLoader and make predictions
dl = learn.dls.test_dl(df)
preds = learn.get_preds(dl=dl)

# merge predictions with movie ids
preds_df = pd.DataFrame({
    'item': movies_to_predict_for,
    'prediction': preds[0].numpy().flatten()
}).sort_values('prediction', ascending=False)

# show top 10 ratings
display(preds_df[:10])