Une analyse quantitative de la vieille école runescape Hiscores.
Ce référentiel contribue les éléments suivants:
L'ensemble de données se compose des fichiers suivants:
player-stats.csv
: niveaux de compétence dans les 23 compétences pour les 2 millions de comptes OSR.cluster-centroids.csv
: valeurs centrales pour les clusters qui émergent du jeu de données de partitionnement en groupes en fonction de la similitude du compte. Chaque centroïde est un vecteur de valeurs comprise entre 1 et 99 dans l'espace "OSRS compétence".player-clusters.csv
: ID de cluster par joueur pour trois courses de clustering distinctes, regroupant des comptes similaires en examinant (i) toutes les compétences, (ii) les compétences de combat uniquement et (iii) les compétences non combat.player-stats-raw.csv
: Rank, niveau, XP, Clues, mini-jeu et statistiques de boss pour les 2 millions de joueurs OSRS. Ce fichier est la sortie brute du processus de grattage (1,7 Go).Ces fichiers ne sont pas vérifiés dans le dépôt en raison des contraintes de taille de fichier. Ils peuvent être téléchargés séparément de Google Drive: https://bit.ly/osrs-hiscores-dataset
Les statistiques des joueurs ont été collectées auprès des OSR officiels Hiscores sur une période de 24 heures le 21 juillet 2022.
├── LICENSE
├── Makefile <- Top-level Makefile for building and running project.
├── README.md <- The top-level README for developers using this project.
│
├── app <- Application code and assets.
├── bin <- Utility executables.
│
├── data
│ ├── final <- The final, canonical data set.
│ ├── interim <- Intermediate data that has been transformed.
│ └── raw <- The original, immutable data dump.
│
├── ref <- Reference files used in data processing.
├── scripts <- Scripts for the stages of the data processing pipeline.
│
├── src
│ ├── analysis <- Data science and analytics.
│ └── scrape <- Scraping hiscores data.
│
├── test <- Unit tests.
│
├── Procfile <- Entry point for deployment as a Heroku application.
├── requirements.txt <- Dependencies file for reproducing the project environment.
├── runapp.py <- Main script for Dash application.
└── setup.py <- Setup file for installing this project through pip.
À un niveau élevé, ce référentiel met en œuvre un pipeline de science des données:
scrape OSRS hiscores data
↓
cluster players by stats
↓
project clusters to 3D
↓
build application data
ainsi qu'une application Dash pour visualiser les résultats.
Les étapes du pipeline de données sont entraînées par un makefile avec make
cibles de niveau supérieur pour chaque étape de traitement:
make init
: configurer l'environnement du projet et installer les dépendances.make scrape
: grattez les données des OSR officiels Hiscores et transformez-vous en un ensemble de données nettoyé.make cluster
: regroupant les joueurs en groupes de comptes similaires en fonction de leurs statistiques. Utilise K-Means comme algorithme de clustering, implémenté par la bibliothèque FAISS.make postprocess
: projeter les centroïdes de cluster de l'espace de haute dimension à la 3D à des fins de visualisation (l'UMAP est l'algorithme utilisé pour la réduction de la dimensionnalité). Calculez des quartiles pour chaque cluster en fonction de la population de joueurs qu'il contient.make build-app
: Build Données et base de données d'application à l'aide de tous les résultats analytiques précédents. Cet objectif lancera une instance MongoDB dans un conteneur Docker sur l'URL localhost:27017
(par défaut). Les étapes 2 et 3 peuvent (et devraient) être ignorées en exécutant simplement make download-dataset
, qui récupère les données grattées et les résultats de clustering d'un seau S3. Cela nécessite un compte AWS avec des informations d'identification situées dans le répertoire ~/.aws
.
Pour lancer l'application, exécutez make run-app
et visitez l'URL localhost:8050
dans un navigateur Web.
L'application finale peut être construite et exécutée en une seule photo via make app
, qui utilise des données téléchargées plutôt que de gratter et de regrouper les données à partir de zéro. La cible make all
est ce qui a été utilisé pour construire les résultats finaux de ce dépôt. Si le grattage des données, notez qu'une utilisation élevée de l'API Hiscores peut entraîner le bloquer votre IP. Veuillez être épargné et respectueux des ressources du serveur de Jagex dans votre utilisation de ce code.
Exécutez make help
pour voir plus de cibles de niveau supérieur.
Un certain nombre de variables d'environnement sont définies afin de configurer l'application.
OSRS_APPDATA_URI
: Path vers les données d'application. Fichier .pkl (S3 ou local)OSRS_MONGO_URI
: URL à laquelle l'instance MongoDB s'exécuteOSRS_MONGO_COLL
: Store / Récupérer les données des joueurs de la collecte avec ce nomIl existe également des variables d'environnement définissant des noms de fichiers à chaque étape du pipeline de données.
Les valeurs par défaut pour toutes les variables d'environnement sont définies dans .env.default
et importées chaque fois qu'une cible make
est exécutée. Si un fichier appelé .env
existe, tous les paramètres y seront remplacés dans .env.default
.
~/.aws
(Créer un compte ici) all
: tous les 23 compétences OSRScb
: Les 7 compétences de combatnoncb
: les 16 compétences non combatn_neighbors=10
et min_dist=0.25
ont été utilisés pour les all
et noncb
; n_neighbors=20
et min_dist=0.25
ont été utilisés pour cb
divisé.Voici quelques idées de projets de science des données.