Version: id

Mempersiapkan Set Data untuk PyTorch

Membersihkan Set Data

Kami menggunakan 2 set data untuk membangun model PyTorch.

1. Set Data Info Game Metakritik

Kumpulan data ini berisi semua video game yang diterbitkan dari 1998-2018. Berikut cuplikan tampilannya:

Unnamed0JudulTahunPenerbitGenrePlatformMetascoreAvg_UserscoreNo_Players
00The Legend of Zelda: Ocarina of Time1998NintendoAction Adventure;FantasyNintendo64999.11 Player
11Tony Hawk's Pro Skater 22000NeversoftEntertainmentSports;Alternative;SkateboardingPlayStation 987.41-2
22Grand Theft Auto IV2008RockstarNorthAction Adventure;Modern;Modern;Open-WorldPlayStation3987.51 Player

Agar mesin rekomendasi kami tetap up-to-date, kami hanya tertarik pada judul game setelah tahun 2010. Jadi mari kita bersihkan dataset ini.

Impor pandas

Pertama kita mengimpor panda, paket Python yang digunakan untuk manipulasi dan analisis data.

import pandas as pd

Membaca dan Memfilter Data

Kemudian, kami menggunakan panda untuk membaca file dataset yang telah kami impor.

games_df = pd.read_csv("game_info.csv")

Kumpulan data ini berisi beberapa nilai Tahun yang nihil. Pilih hanya yang tidak nol dan setelah tahun 2010.

games_df = games_df[games_df['Year'].notnull()]
games_df=games_df.loc[games_df.Year>=2010.0].reset_index(drop=True)

Terakhir, mari kita hapus kolom 'Unnamed' karena itu berlebihan dan ganti nama dataframe yang telah dibersihkan menjadi df.

df = games_df.drop(columns=['Unnamed'], axis=1)

Di bawah ini adalah cuplikan dari tampilan df:

IndeksJudulTahunPenerbitGenrePlatformMetascoreAvg_UserscoreNo_Players
0Super Mario Galaxy 22010NintendoEADTokyoAction;Platformer;Platformer;3DWii979.1No Online Multiplayer
1Grand Theft Auto V2014RockstarNorthAction Adventure;Modern;Open-WorldXboxOne977.8Up to 30
2Grand Theft Auto V2013RockstarNorthModern;Action Adventure;Modern;Open-WorldPlayStation3978.3Up to 16

2. Peringkat Pengguna Game Metacritic

Kumpulan data ini berisi penilaian dan komentar pengguna untuk game tertentu. Kami hanya tertarik untuk melihat judul game di kolom df, username dan userscore kami. Sebelum dibersihkan, kumpulan data tersebut terlihat seperti cuplikan berikut:

Unnamed0JudulPlatformUserscoreKomentarNama Pengguna
00The Legend of Zelda: Ocarina of TimeNintendo6410Everything in OoT is so near at perfection, it...SirCaestus
11The Legend of Zelda: Ocarina of TimeNintendo6410I won't bore you with what everyone is already...Kaistlin
22The Legend of Zelda: Ocarina of TimeNintendo6410Anyone who gives the masterpiece below a 7 or ...Jacody

Membaca dan Memfilter Data

Sama dengan dataset sebelumnya, kami menggunakan pandas untuk membaca file data.

user_df=pd.read_csv("metacritic_game_user_comments.csv")

Kemudian kami menghapus kolom yang tidak kami butuhkan.

user_df = user_df.drop(columns=['Unnamed', 'Platform','Comment'], axis=1)

Dan kami hanya memilih data dengan Judul yang ada di kolom Judul df, karena kami hanya ingin peringkat pengguna untuk game setelah 2010. Dataframe terakhir yang dibersihkan disebut users.

users = user_df.loc[user_df['Title'].isin(df['Title'])].reset_index(drop=True)

Cuplikan dari kumpulan data yang dibersihkan terlihat seperti:

IndeksJudulUserscoreNama Pengguna
0Super Mario Galaxy 210S.Kumar
1Super Mario Galaxy 28ThePlasmaQuasar
2Super Mario Galaxy 210juanandesign

Ekspor Set Data untuk Model

Untuk bekerja dengan kumpulan data dengan mudah, lebih baik menggunakan id berkelanjutan untuk mengidentifikasi judul dan pengguna game.

Menyandikan Kolom

Kita dapat membuat fungsi untuk menyandikan kolom pandas dengan id.

def encode_column(column):
""" Encodes a pandas column with continous IDs"""
keys = column.unique()
key_to_id = {key:idx for idx,key in enumerate(keys)}
return key_to_id, np.array([key_to_id[x] for x in column]), len(keys)

Menyandikan Bingkai Data

Kemudian, encode dataframe ʻusersuntuk kolomTitle dan ʻUsername dengan fungsi berikut.

def encode_df(users):
"""Encodes rating data with continuous user and game title ids"""
game_ids, users['TitleId'], num_games = encode_column(users['Title'])
user_ids,users['UserId'], num_users = encode_column(users['Username'])
return users, num_users, num_games, user_ids, game_ids

Ekspor ke csv

Jalankan fungsinya dan ekspor dataset baru ke csv.

users, num_users, num_games, user_ids, game_ids = encode_df(users)
users.to_csv('game_ratings.csv')

File csv ini akan digunakan untuk melatih dan melatih ulang model dengan PyTorch. Di bawah ini adalah cuplikannya:

IndeksJudulUserscoreNama penggunaUserIdTitleId
0Super Mario Galaxy 210S.Kumar00
1Super Mario Galaxy 28ThePlasmaQuasar10
2Super Mario Galaxy 210juanandesign20