古い学校のrunescape hiscoresの定量分析。
このリポジトリは次のものに貢献します。
データセットは次のファイルで構成されています。
player-stats.csv
:上位200万のOSRSアカウントの23のスキルすべてのスキルレベル。cluster-centroids.csv
:類似性に基づいて、プレーヤーデータセットをグループに分割するクラスターの中央値。各重心は、「OSRSスキル」スペースの1〜99の間の値のベクトルです。player-clusters.csv
:3つの個別のクラスタリング実行のプレーヤーごとのクラスターID。player-stats-raw.csv
:ランク、レベル、XP、手がかり、ミニゲーム、ボスの統計上位200万人のOSRSプレーヤー。このファイルは、スクレイピングプロセス(1.7 GB)からの生の出力です。これらのファイルは、ファイルサイズの制約のため、レポにチェックインされません。 Googleドライブから別々にダウンロードできます:https://bit.ly/osrs-hiscores-dataset
プレーヤーの統計は、2022年7月21日に24時間にわたって公式のOSRS Hiscoresから収集されました。
├── 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.
高レベルでは、このリポジトリはデータサイエンスパイプラインを実装しています。
scrape OSRS hiscores data
↓
cluster players by stats
↓
project clusters to 3D
↓
build application data
結果を視覚化するためのダッシュアプリケーションとともに。
データパイプラインの段階は、各処理段階のトップレベルのmake
ターゲットを備えたメイクファイルによって駆動されます。
make init
:プロジェクト環境を設定し、依存関係をインストールします。make scrape
:公式のOSRSヒスコアからデータをスクレイプし、クリーニングされたデータセットに変換します。make cluster
。 FAISSライブラリによって実装されたクラスタリングアルゴリズムとしてK-Meansを使用します。make postprocess
:視覚化のためにクラスターの重心を高次元空間から3Dに投影します(UMAPは、次元削減に使用されるアルゴリズムです)。含まれるプレーヤー母集団に基づいて、各クラスターの四分位数を計算します。make build-app
:以前のすべての分析結果を使用して、アプリケーションデータとデータベースをビルドします。このターゲットは、URL localhost:27017
(デフォルト)のDockerコンテナ内にMongoDBインスタンスを起動します。手順2と3は、S3バケツから削り取られたデータとクラスタリングの結果をmake download-dataset
するだけで実行するだけで実行することでスキップできます(そしてスキップする必要があります)。これには、 ~/.aws
ディレクトリにある資格情報を備えたAWSアカウントが必要です。
アプリケーションを起動するには、 make run-app
実行し、WebブラウザーでURL localhost:8050
にアクセスします。
最終的なアプリケーションは、 make app
介して1つのショットで構築および実行できます。このアプリは、データをスクレイピングしてゼロからクラスタリングするのではなく、ダウンロードしたデータを使用します。ターゲットがmake all
、このレポの最終結果を構築するために使用されたものです。データを削減する場合、Hiscores APIの使用量が高いとIPがブロックされる可能性があることに注意してください。このコードの使用において、Jagexのサーバーリソースを節約し、尊重してください。
実行するmake help
を実行して、より多くのトップレベルのターゲットを確認します。
アプリケーションを構成するために、多くの環境変数が設定されています。
OSRS_APPDATA_URI
:アプリケーションデータへのパス.pklファイル(S3またはローカル)OSRS_MONGO_URI
:MongoDBインスタンスが実行されているURLOSRS_MONGO_COLL
:この名前でコレクションからプレーヤーのデータを保存/取得また、データパイプラインの各段階でファイル名を定義する環境変数もあります。
すべての環境変数のデフォルトは、 .env.default
で定義され、 make
ターゲットが実行されるたびにインポートされます。 .env
と呼ばれるファイルが存在する場合、そこにある設定は.env.default
のそれらをオーバーライドします。
~/.aws
ディレクトリにインストールされている資格情報を持つAWSアカウント(こちらからアカウントを作成) all
:すべて23のOSRSスキルcb
:7つの戦闘スキルnoncb
:16の非戦闘スキルn_neighbors=10
およびmin_dist=0.25
は、 all
およびnoncb
に分割されました。 n_neighbors=20
およびmin_dist=0.25
が分割cb
に使用されました。データサイエンスプロジェクトのアイデアは次のとおりです。