gpt4 book ai didi

python - 将字典转换为稀疏矩阵

转载 作者:太空狗 更新时间:2023-10-29 20:22:37 25 4
gpt4 key购买 nike

我有一个字典,其中键作为 user_ids,值作为该用户喜欢的 movie_ids 列表,#unique_users = 573000 和 #unique_movies =16000。

{1: [51, 379, 552, 2333, 2335, 4089, 4484], 2: [51, 379, 552, 1674, 1688, 2333, 3650, 4089, 4296, 4484], 5: [783, 909, 1052, 1138, 1147, 2676], 7: [171, 321, 959], 9: [3193], 10: [959], 11: [131,567,897,923],..........}

现在我想将其转换成一个矩阵,行为 user_id,列为 movies_id,用户喜欢的电影的值为 1,即 573000*16000

最终,我必须将该矩阵与其转置相乘,以获得与 dim (#unique_movies,#unique_movies) 的共现矩阵。

此外,如果 X 类似于 (500000,12000),X'*X 操作的时间复杂度是多少。

最佳答案

我想你可以构造一个空的 dok_matrix并填写值。然后转置并转换为csr_matrix用于高效的矩阵乘法。

import numpy as np
import scipy.sparse as sp
d = {1: [51, 379, 552, 2333, 2335, 4089, 4484], 2: [51, 379, 552, 1674, 1688, 2333, 3650, 4089, 4296, 4484], 5: [783, 909, 1052, 1138, 1147, 2676], 7: [171, 321, 959], 9: [3193], 10: [959], 11: [131,567,897,923]}

mat = sp.dok_matrix((573000,16000), dtype=np.int8)

for user_id, movie_ids in d.items():
mat[user_id, movie_ids] = 1

mat = mat.transpose().tocsr()
print mat.shape

关于python - 将字典转换为稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37862139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com