如何从DataFrame以特定格式创建sparsematrix

时间:2018-07-02 21:39:19

标签: python dataframe sparse-matrix

我正在使用带有列= ['users_id','item_id','rating','timestamp','title']的DataFrame的python 3.5,并且我正在使用          model = LightFM(loss='warp')用于推荐人模型

因此,为了进行培训,我需要采用特定格式的sparseMatrix =>(users_id,item_id)评级

like this

但是我使用此scipy.sparse.csr_matrix(data['users_id'])时从未成功。它给了我这样的东西:

(0,0)5

(0,1)5

(0,2)4

(0,3)5

我应该如何处理?

1 个答案:

答案 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 DatasetsQuickstart的部分。