Ho un dizionario con le chiavi come user_ids e valori come elenco di movie_ids piaciuto da quell'utente con #unique_users = 573000 e # unique_movies = 16000.convert dizionario in sparse matrix
{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],..........}
Ora voglio convertire questo in in una matrice con righe come user_ids e colonne come movies_id con i valori 1 per i film che l'utente ha voluto vale a dire che sarà 573000 * 16000
definitiva devo moltiplica questa matrice con la sua trasposizione per avere una matrice di co-occorrenza con dim (# unique_movies, # unique_movies).
Inoltre, quale sarà la complessità temporale dell'operazione X '* X in cui X è come (500000,12000).
ma poi per ciclo sarà di 57300 iterazioni in quanto è il numero di utenti distinti nel dizionario –
@chiragyadav Penso che dovrebbe essere efficiente perché hai già indicizzato i tuoi dati nel dizionario e dok_matrix è efficiente per la costruzione matrice in modo incrementale. –
'importazione scipy.sparse come sp mat = sp.dok_matrix ((576808,11287), DTYPE = np.int8) per UID, brand_list in user_pref_dict.items(): mat [uid, brand_list] = 1' provato il codice sopra ma gettando l'errore sotto: indice (131) fuori range -11287 a 11286) –