如何从特定格式的 DataFrame 创建稀疏矩阵
how to create a sparsematrix from DataFrame in a specific format
我正在使用 python 3.5,DataFrame 的列数 = ['users_id'、'item_id'、'rating'、'timestamp'、'title'] 我正在使用
model = LightFM(loss='warp')
推荐模型
所以为了训练我需要一个特定格式的稀疏矩阵 => (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
我应该如何处理?
如果你想在你的 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, you can see for example the section about Building Datasets or the Quickstart 中找到更多信息。
我正在使用 python 3.5,DataFrame 的列数 = ['users_id'、'item_id'、'rating'、'timestamp'、'title'] 我正在使用
model = LightFM(loss='warp')
推荐模型
所以为了训练我需要一个特定格式的稀疏矩阵 => (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
我应该如何处理?
如果你想在你的 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, you can see for example the section about Building Datasets or the Quickstart 中找到更多信息。