Movies ratings and rankings example
Packages to load
[1]:
import ratingslib.ratings as rl
import pandas as pd
from ratingslib.datasets.filenames import FILENAME_MOVIES_EXAMPLE, dataset_path
from ratingslib.datasets.parse import create_pairs_data, parse_pairs_data
from ratingslib.utils.methods import parse_columns
Prepare data
[2]:
filename = dataset_path(FILENAME_MOVIES_EXAMPLE)
user_movie_df = pd.read_csv(filename, index_col='User')
Create movie-movie dataframe. Movies are placed in pairs which means that every pair is a hypothetical matchup. The columns of movie_movie dataframe are set in COLUMNS dictionary.
[3]:
COLUMNS = {'item_i': 'MovieI',
'item_j': 'MovieJ',
'points_i': 'RatingI',
'points_j': 'RatingJ'
}
col_names = parse_columns(COLUMNS)
movie_movie_df = create_pairs_data(user_movie_df, columns_dict=COLUMNS)
Parse movie-movie dataframe as pairs data.
[4]:
data_df, items_df = parse_pairs_data(movie_movie_df, columns_dict=COLUMNS)
Colley method
[5]:
rl.Colley().rate(data_df, items_df,
columns_dict=COLUMNS, sort=True)
[5]:
Item | rating | ranking | |
---|---|---|---|
2 | Movie3 | 0.750 | 1 |
1 | Movie2 | 0.425 | 2 |
0 | Movie1 | 0.325 | 3 |
Massey method
[6]:
rl.Massey().rate(data_df, items_df,
columns_dict=COLUMNS, sort=True)
[6]:
Item | rating | ranking | |
---|---|---|---|
2 | Movie3 | 1.166667 | 1 |
1 | Movie2 | 0.104167 | 2 |
0 | Movie1 | -1.270833 | 3 |
Keener method
[7]:
rl.Keener(normalization=True).rate(data_df, items_df,
columns_dict=COLUMNS,
sort=True)
[7]:
Item | rating | ranking | |
---|---|---|---|
2 | Movie3 | 0.510552 | 1 |
1 | Movie2 | 0.288870 | 2 |
0 | Movie1 | 0.200577 | 3 |
Offense-Defense method
[8]:
rl.OffenseDefense(tol=0.001).rate(data_df, items_df,
columns_dict=COLUMNS, sort=True)
[8]:
Item | rating | ranking | |
---|---|---|---|
2 | Movie3 | 21.998853 | 1 |
1 | Movie2 | 15.821345 | 2 |
0 | Movie1 | 10.618677 | 3 |