การวิเคราะห์เชิงปริมาณของโรงเรียนเก่า Runescape Hiscores
ที่เก็บนี้มีส่วนร่วมดังต่อไปนี้:
ชุดข้อมูลประกอบด้วยไฟล์ต่อไปนี้:
player-stats.csv
: ระดับทักษะในทักษะทั้งหมด 23 ทักษะสำหรับบัญชี OSR 2 ล้านอันดับแรกcluster-centroids.csv
: ค่ากลางสำหรับกลุ่มที่เกิดขึ้นจากชุดข้อมูลผู้เล่นที่แบ่งพาร์ติชันเป็นกลุ่มตามความคล้ายคลึงกันของบัญชี แต่ละเซนทรอยด์เป็นเวกเตอร์ของค่าระหว่าง 1-99 ในพื้นที่ "ทักษะ OSRS"player-clusters.csv
: ID คลัสเตอร์ต่อผู้เล่นสำหรับการวิ่งคลัสเตอร์สามแบบแยกกันจัดกลุ่มบัญชีที่คล้ายกันโดยดูที่ (i) ทักษะทั้งหมด (ii) ทักษะการต่อสู้เท่านั้นและ (iii) ทักษะที่ไม่ใช่การต่อสู้เท่านั้นplayer-stats-raw.csv
: อันดับ, ระดับ, XP, เบาะแส, สถิติมินิเกมและบอสสำหรับผู้เล่น OSRS 2 ล้านอันดับแรก ไฟล์นี้เป็นเอาต์พุตดิบจากกระบวนการขูด (1.7 GB)ไฟล์เหล่านี้ ไม่ได้ตรวจสอบใน repo เนื่องจากข้อ จำกัด ขนาดไฟล์ พวกเขาสามารถดาวน์โหลดแยกต่างหากจาก Google Drive: https://bit.ly/osrs-hiscores-dataset
สถิติผู้เล่นถูกรวบรวมจาก OSRS Hiscores อย่างเป็นทางการในช่วง 24 ชั่วโมงในวันที่ 21 กรกฎาคม 2565
├── 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
พร้อมกับแอปพลิเคชัน Dash สำหรับการแสดงผลลัพธ์
ขั้นตอนของไปป์ไลน์ข้อมูลถูกขับเคลื่อนด้วย makefile ที่มี make
ระดับบนสุดสำหรับแต่ละขั้นตอนการประมวลผล:
make init
: ตั้งค่าสภาพแวดล้อมโครงการและติดตั้งการพึ่งพาmake scrape
: ขูดข้อมูลจาก OSRS อย่างเป็นทางการและเปลี่ยนเป็นชุดข้อมูลที่ทำความสะอาดmake cluster
: ผู้เล่นคลัสเตอร์เป็นกลุ่มของบัญชีที่คล้ายกันตามสถิติของพวกเขา ใช้ k-means เป็นอัลกอริทึมการจัดกลุ่มซึ่งดำเนินการโดยไลบรารี FAISSmake postprocess
: ฉายภาพกลุ่ม centroids จากพื้นที่มิติสูงถึง 3D เพื่อการสร้างภาพ (UMAP เป็นอัลกอริทึมที่ใช้สำหรับการลดขนาด) คำนวณควอไทล์สำหรับแต่ละคลัสเตอร์ตามประชากรผู้เล่นที่มีmake build-app
: สร้างข้อมูลแอปพลิเคชันและฐานข้อมูลโดยใช้ผลลัพธ์การวิเคราะห์ก่อนหน้าทั้งหมด เป้าหมายนี้จะเปิดตัวอินสแตนซ์ MongoDB ภายในคอนเทนเนอร์ Docker ที่ URL localhost:27017
(โดยค่าเริ่มต้น) ขั้นตอนที่ 2 และ 3 สามารถ (และควร) ถูกข้ามโดยเพียงแค่เรียกใช้ make download-dataset
ซึ่งดึงข้อมูลที่ถูกคัดค้านและผลลัพธ์การจัดกลุ่มจากถัง S3 สิ่งนี้ต้องใช้บัญชี AWS ที่มีข้อมูลประจำตัวที่อยู่ในไดเรกทอรี ~/.aws
ในการเปิดตัวแอปพลิเคชัน make run-app
และเยี่ยมชม URL localhost:8050
ในเว็บเบราว์เซอร์
แอปพลิเคชั่นสุดท้ายสามารถสร้างและเรียกใช้ในการยิงเดียวผ่าน make app
ซึ่งใช้ข้อมูลที่ดาวน์โหลดมากกว่าการขูดและจัดกลุ่มข้อมูลตั้งแต่เริ่มต้น เป้าหมาย make all
เป็นสิ่งที่ใช้ในการสร้างผลลัพธ์สุดท้ายสำหรับ repo นี้ หากการขูดข้อมูลโปรดทราบว่าการใช้ HISCORES API สูงอาจส่งผลให้ IP ของคุณถูกบล็อก โปรดประหยัดและเคารพทรัพยากรเซิร์ฟเวอร์ของ Jagex ในการใช้รหัสนี้
เรียก make help
ดูเป้าหมายระดับบนสุด
มีการตั้งค่าตัวแปรสภาพแวดล้อมจำนวนหนึ่งเพื่อกำหนดค่าแอปพลิเคชัน
OSRS_APPDATA_URI
: พา ธ ไปยังแอปพลิเคชันข้อมูล. pkl ไฟล์ (S3 หรือ local)OSRS_MONGO_URI
: url ที่อินสแตนซ์ mongoDb กำลังทำงานอยู่OSRS_MONGO_COLL
: จัดเก็บ/ดึงข้อมูลผู้เล่นจากคอลเลกชันด้วยชื่อนี้นอกจากนี้ยังมีตัวแปรสภาพแวดล้อมที่กำหนดชื่อไฟล์ในแต่ละขั้นตอนของไปป์ไลน์ข้อมูล
ค่าเริ่มต้นสำหรับตัวแปรสภาพแวดล้อมทั้งหมดถูกกำหนดใน .env.default
และนำเข้าเมื่อใดก็ตามที่เป้าหมาย make
เรียกใช้ หากไฟล์ที่เรียกว่า .env
มีอยู่การตั้งค่าใด ๆ ที่มีจะแทนที่ไฟล์เหล่านั้นใน. .env.default
~/.aws
(สร้างบัญชีที่นี่) all
: ทักษะทั้งหมด 23 OSRS ทั้งหมดcb
: ทักษะการต่อสู้ทั้ง 7noncb
: ทักษะที่ไม่ใช่การต่อสู้ 16 ครั้งn_neighbors=10
และ min_dist=0.25
ถูกใช้สำหรับแยก all
และ noncb
; n_neighbors=20
และ min_dist=0.25
ถูกใช้สำหรับแยก cb
นี่คือแนวคิดบางประการสำหรับโครงการวิทยาศาสตร์ข้อมูล