python - 如何从特定格式的 DataFrame 创建稀疏矩阵

标签 python dataframe sparse-matrix

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

所以为了训练,我需要一个特定格式的稀疏矩阵 => (users_id, item_id) rating

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 中找到更多信息,例如,您可以看到有关 Building Datasets 的部分或 Quickstart .

关于python - 如何从特定格式的 DataFrame 创建稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144061/

相关文章:

python - 在 mac 上的 python 3.8.5 上导入 KafkaProducer 时在 self.async 周围出现 SyntaxError

python - iPython:无法导入名为 sklearn 的模块

python - 无法更新到 Anaconda Navigator 1.10.0 (MacOS)

python - 将本地目录挂载到Docker Container中

python - pyspark计算稀疏向量的距离矩阵

python - 用于增量求和的正确 SciPy 稀疏矩阵格式是什么

python - 从 scikit-learn 中的截断 SVD 中获取 U、Sigma、V* 矩阵

如果另一列包含特定字符串,Python Pandas 如何更新列

python - 将 NaN 作为 value_counts() 的第一个值

python - 单元格中的多个值 - 如何重组它们