Skip to content

A recommender engine based on Collaborative Filtering of the games available on the Steam Game Store

License

Notifications You must be signed in to change notification settings

AALAM98mod100/steam-recommendation-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Steam Recommender System

A recommender system based on Collaborative Filtering (Pearson's Similarity Coefficient) from datasets of the Steam userbase.

Pandas was used for most of the data manipulation with some string functions used for non-unicode, non-alphanumeric text cleaning. Additionally, Flask and JS was used for the front-end.

Data Wrangling

Two datasets were used in the making of this recommender system. The first was Steam Games Dataset from Kaggle. This was required to identify the game names to their application ids since the other dataset, which contained implicit ratings in the form of hours played by a user per game, did not contain the application ids. The user dataset is also sourced from Kaggle here.

Implicit Ratings

The user dataset had data of each user playing a game for hours. What I did was convert the implicit rating hours played to an explicit rating on a scale from 1 to 5.

This was achieved simply by mapping the ratings linearly to the range where is the average number of hours game is played across the whole dataset.

Endpoint Dataset

This dataset is generated using an inner join of the appid of the gamee in our dataset to the media dataset containing header images for the games. This dataset is used to retreive media images for the front-end in browser.

Front End

The front end is made using HTML/CSS and the fetch API and Flask on the Python side. The process is generally straightforward but not without its hiccups as this was my first time implementing cross-communication between the front-end and the back-end.

To Run

Simply clone the repository, the code from main.ipynb has been copied into website.py due to Flask requirements.

  • Run website.py
  • Open src/templates/index.html in Chrome with "--disable-web-security --user-data-dir=~/chromeTemp" launch options set and running as admin.
  • Just pick your games and rate them 5 for LOVED IT and 1 for HATED IT
  • See what games are next on your ever-increasing backlog that you will never play because you are too busy reading READMEs to the very end. Come on now, no shame in admitting it...