隐式Python库中的空白结果以获取建议

隐式Python库中的空白结果以获取建议,python,machine-learning,recommendation-engine,Python,Machine Learning,Recommendation Engine,我正在使用Python隐式库()希望为我的用户群生成一些产品建议。我的用户群中有13000个产品视图的数据。我已将此数据提取到csv中,如下所示: user_id, 1, 2, 3 1, 0, 1, 0 2, 1, 1, 0 3, 0, 0, 1 上面我的csv在顶部有产品标识,在左侧有用户标识,用于行中的第一列。每个用户的1或0反映了用户是否查看了该产品id。以下是我迄今为止尝试生成推荐的代码: import implicit import pandas as pd import scipy

我正在使用Python隐式库()希望为我的用户群生成一些产品建议。我的用户群中有13000个产品视图的数据。我已将此数据提取到csv中,如下所示:

user_id, 1, 2, 3
1, 0, 1, 0
2, 1, 1, 0
3, 0, 0, 1
上面我的csv在顶部有产品标识,在左侧有用户标识,用于行中的第一列。每个用户的1或0反映了用户是否查看了该产品id。以下是我迄今为止尝试生成推荐的代码:

import implicit
import pandas as pd
import scipy.sparse as sparse

data = pd.read_csv('data/interactions_matrix.csv')
interactions = sparse.csr_matrix(data.to_sparse().to_coo())

# initialize a model
model = implicit.als.AlternatingLeastSquares()

# train the model on a sparse matrix of item/user/confidence weights
model.fit(interactions)

user_ids = [1,2,3]

# recommend items for a user
for user_id in user_ids:
    print(user_id)
    print(model.recommend(user_id, interactions))

不幸的是,当我运行结果时,我得到的只是一堆空白数组,这让我觉得我显然做错了什么。我猜这是我正在导入的数据的格式,但我很难找到有关示例数据格式的信息来读入库中

当加载这样的数据时,您的交互矩阵仍然为每个项目/用户对都有一个条目-对于这个库,这表示每个用户都喜欢每个项目。默认情况下,推荐调用删除已经喜欢的项(使用filter\u ready\u liked\u items参数),导致结果像您看到的那样是空数组-但这也意味着您训练的模型也不会有任何效果


您应该调用
交互。在拟合模型之前,消除_zeros()
以删除零项。此外,与使用CSV格式的密集矩阵并转换为coo相比,只列出三个itemid/userid/value可能更容易,谢谢!在做了这些更改之后,我能够生成一些结果,当运行上面的代码时,我遇到了一件事,就是在迭代我的用户id时出现了“IndexError:index(1121)超出范围”,这些应该是索引而不是实际的用户id吗?同样返回的结果(17,0.038822174),这是产品或产品id的索引吗?