如何解决LightFM 上最简单的例子
我开始研究 LightFM 以构建推荐。同时,当我使用movilens数据集时,一切似乎都很好,但是当我使用我的日期集时,我得到了奇怪的结果。为了确保我正确调用 LightFM,我做了一个简单的例子。但他无论如何都无法让它发挥作用。请告诉我我做错了什么。
import numpy as np
import pandas as pd
import scipy.sparse as sparse
from lightfm import LightFM
from lightfm.cross_validation import random_train_test_split
def make_data_lil(n_users,n_items):
# make 2D matrix
lil = [[5] * n_items for _ in range(n_users)]
# change val in matrix
for i_user,line_user in enumerate(lil):
for i_item,val in enumerate(line_user):
if i_user < 5:
lil[i_user][i_item] = i_user + 1
if i_item < 5:
lil[i_user][i_item] = i_item + 1
# show matrix
print("Data matrix")
[print(x) for x in lil]
return lil
n_items = 20
n_users = 10
lil = make_data_lil(n_users,n_items)
coo_mtx = sparse.coo_matrix(np.array(lil))
data_train,data_test = random_train_test_split(coo_mtx,test_percentage=0.3,random_state=1)
for loss in ["logistic","warp","bpr","warp-kos"]:
model = LightFM(loss=loss)
model.fit(coo_mtx)
res = []
for i in range(n_users):
scores = model.predict(i,np.arange(n_items))
res.append(scores)
df = pd.DataFrame(data=res)
df = df.round(2)
print(n_items * '-----')
print(f"Function loss={loss}")
print(df.to_string())
结果预测: https://i.imgur.com/pM5UH7k.png
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。