我有一个字典,其键值为user_id和值,作为用户使用#unique_users = 573000和#unique_movies = 16000所喜欢的movie_ids列表。将字典转换为稀疏矩阵
{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_ids和列的矩阵与值1 movies_id针对用户喜欢也就是说,它的电影将是573000 * 16000
最终我不得不将此矩阵与它的转置相乘以得到具有dim的同现矩阵(#unique_movies,#unique_movies)。
另外,X'* X操作的时间复杂度是X(X = 500000,12000)。
但是然后for循环将是57300次迭代,因为这是字典中不同用户的数量 –
@chiragyadav我认为这应该是有效的,因为您已经将字典中的数据编入索引并且dok_matrix对于构建有效增量式矩阵。 –
'进口scipy.sparse作为SP 垫= sp.dok_matrix((576808,11287),D型细胞= np.int8) 为UID,brand_list在user_pref_dict.items(): 垫[UID,brand_list] = 1' 试过上面的代码,但它投掷下面的错误: 指数(131)超出范围-11287到11286) –