Salm
Salm

Reputation: 69

How to get utility Matrix from initial dataset?

While I apply Alternating Least Squares,I found need to use utility matrix.

I'm working on 20 milion Movielens dataset which contain rating file(userId ,MovieId ,Rating).

I know utility matrix (M X N) where M is the number of users and N is the number of Movies .

my question: How to build utility matrix from rating file?

Upvotes: 0

Views: 444

Answers (1)

Kartikey Singh
Kartikey Singh

Reputation: 892

As, the 20M dataset couldn't fit in my computer, during the pivot call, I am showing the process for 1M dataset.

import re
import os
import zipfile
import numpy as np
import pandas as pd
from sklearn import preprocessing
from urllib.request import urlretrieve

# Creating required folders, if they don't exist
def create_dir(dirname):
    if os.path.exists(dirname):
        print(f"Directory {dirname} already exists.")
    else:  
        os.mkdir(dirname)
        
create_dir('Datasets')

print("Downloading movielens data...")
urlretrieve("http://files.grouplens.org/datasets/movielens/ml-1m.zip", "movielens.zip")
zip_ref = zipfile.ZipFile('movielens.zip', "r")
zip_ref.extractall()
print("Extraction done")


# Loading ratings dataset and renamed extracted folder
ratings = pd.read_csv('ml-1m/ratings.dat', sep='::', names=['userId', 'movieId', 'rating', 'timestamp'])
ratings = ratings.drop(columns=['timestamp'])
ratings.to_csv('Datasets/ratings.csv', index=False)
print(ratings.shape)

pivot_table = ratings.pivot_table(index=['userId'], columns=['movieId'], values='rating')
pivot_table.to_csv('Datasets/user_vs_movies.csv', index=False)
pivot_table.head()

Output:

Downloading movielens data...
Extraction done
(1000209, 3)
movieId 1   2   3   4   5   6   7   8   9   10  ... 3943    3944    3945    3946    3947    3948    3949    3950    3951    3952
userId                                                                                  
1   5.0 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5   NaN NaN NaN NaN NaN 2.0 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
5 rows × 3706 columns

Upvotes: 2

Related Questions