我正在使用带有列= ['users_id','item_id','rating','timestamp','title']的DataFrame的python 3.5,并且我正在使用
model = LightFM(loss='warp')
用于推荐人模型
因此,为了进行培训,我需要采用特定格式的sparseMatrix =>(users_id,item_id)评级
但是我使用此scipy.sparse.csr_matrix(data['users_id'])
时从未成功。它给了我这样的东西:
(0,0)5
(0,1)5
(0,2)4
(0,3)5
我应该如何处理?
答案 0 :(得分:2)
如果要创建一个稀疏矩阵以在LightFM模型中使用后,我认为您应该使用库提供的Dataset对象。例如,如果我叫您的DataFrame df:
from lightfm.data import Dataset
data = Dataset()
data.fit(df.users_id.unique(), df.item_id.unique())
interactions_matrix, weights_matrix = data.build_interactions([tuple(i) for i in df.drop(['timestamp', 'title'], axis = 1).values])
fit方法用于将您的users_id和items_id映射到内部ID,并且build_interactions方法创建两个稀疏矩阵,一个仅包含用户和项目之间的交互的二进制,而另一个具有权重(即评级),以(user_id,item_id)或(user_id,item_id,weight)的可迭代项作为参数。
然后,您可以使用通过build_interactions创建的这两个矩阵在LightFM中适合您的模型。
from lightfm import LightFM
model = LightFM(loss='warp')
model.fit(interactions_matrix, sample_weight = weights_matrix)
您可以在LightFM documentation中找到更多信息,例如,可以查看有关Building Datasets或Quickstart的部分。