提问人:Shekar Tippur 提问时间:3/28/2021 最后编辑:DharmanShekar Tippur 更新时间:5/19/2023 访问量:1334
Fastai 在协作学习模型上的预测
Fastai predict on collaboative learning model
问:
我有一个快速 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
答:
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 的电影的评级:DataLoader
get_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])
评论