Aplikasi web (Streamlit) untuk menghitung dan memprediksi peluang mendapatkan S-Rank Agent dan S-Rank W-Engine di banner terbatas Zenless Zone Zero, sekaligus membandingkan 6 algoritma data mining: Naive Bayes, KNN, Logistic Regression, Decision Tree, Random Forest, dan XGBoost, dengan Markov Chain sebagai acuan teori.
Proyek mata kuliah Penambangan Data. Tidak berafiliasi dengan HoYoverse.
🌐 Coba langsung: https://project-data-mining-zzz.streamlit.app/ (bisa dibuka di HP, tablet, dan laptop)
| NIM | Nama | Peran |
|---|---|---|
| A11.2024.16004 | Syafiq Yahya | Ketua kelompok, mempresentasikan hasil proyek |
| A11.2024.15851 | Dafi Hauzan A.H (@tehgeii) | Pengembang aplikasi, pengumpulan dan pengujian data asli |
| A11.2024.15842 | Gastiadirrijal Rafi M | Penyusun slide presentasi |
| A11.2024.15826 | Zabrina Miftah Z | Penyusun proposal proyek |
| A11.2024.15804 | Rayya Hasya Tamimi | Penyusun proposal proyek |
Dibantu oleh Claude (Anthropic) dalam penulisan kode.
| Halaman | Isi |
|---|---|
| 📥 Import Data | 3 cara: URL dari PowerShell (PC), upload file UIGF (HP/PC), input manual (HP). Ada juga data contoh untuk yang tidak punya game. |
| 🎲 Kalkulator Peluang | Peluang dapat S / S rate-up dalam N pull (Markov Chain, hasil eksak), konversi Polychrome, dan prediksi dari 6 model ML. |
| 📊 Statistik Riwayat | Pity tiap S, rata-rata pity, menang/kalah 50/50, pity sekarang. |
| 🤖 Perbandingan Algoritma | Tabel Accuracy, Balanced Accuracy, Precision, Recall, F1, ROC-AUC, Log Loss, Brier; cross-validation; kurva peluang; confusion matrix; feature importance. |
| 📖 Panduan & FAQ | Cara menjalankan script PowerShell dan menjawab pertanyaan umum. |
Butuh Python 3.10 atau lebih baru.
python -m venv .venv
# Windows: .venv\Scripts\activate | Mac/Linux: source .venv/bin/activate
pip install -r requirements-dev.txt
streamlit run streamlit_app.py # buka http://localhost:8501
python -m pytest -q # jalankan semua test
python scripts/train_models.py # latih ulang model (±1-2 menit)- Pastikan kode sudah ada di GitHub (branch
main). - Buka https://share.streamlit.io, login dengan akun GitHub.
- Create app → pilih repository ini, branch
main, main filestreamlit_app.py. - Di Advanced settings, pilih Python 3.12.
- Deploy. Link
https://<nama-app>.streamlit.appbisa dibuka dari HP, tablet, maupun laptop.
Model yang sudah dilatih (models/models.joblib) ikut di-commit, jadi server tidak
perlu melatih ulang. Versi library di requirements.txt sengaja dikunci supaya
file model pasti bisa dimuat.
streamlit_app.py # titik masuk aplikasi + navigasi
app_pages/ # satu file per halaman
zzzgacha/
config.py # aturan banner (rate, pity, 50/50, daftar S standar)
probability.py # Markov Chain: peluang eksak
records.py # olah riwayat: pity, status guaranteed, 50/50
importers.py # baca/tulis UIGF v4, dataset anonim
fetcher.py # ambil riwayat dari API resmi (aman, host dibatasi)
simulate.py # simulasi Monte Carlo -> dataset sintetis
dataset.py # muat data asli dari data/real/
models.py # 6 algoritma + baseline, fitur, metrik evaluasi
demo.py # data contoh
scripts/
get_zzz_url.ps1 # script PowerShell pengambil URL riwayat (Windows)
train_models.py # latih & evaluasi semua model -> models/
models/ # model terlatih + report.json (dibaca aplikasi)
data/real/ # tempat dataset asli anonim (.csv)
tests/ # 87 test otomatis (pytest)
docs/ # bahan laporan; docs/tugas = file UTS/UAS + kodenya (sumber/)
- Dua tugas klasifikasi dengan fitur yang diketahui sebelum pull
(
pity,pity_ratio,guaranteed,is_wengine):next_pull: apakah pull berikutnya S?next_10: apakah dapat S dalam 10 pull berikutnya (satu kali ten-pull)?
- Data: simulasi Monte Carlo 400 akun dari parameter resmi, ditambah data asli pemain (anonim) untuk pengujian. Pembagian train/test per akun (GroupShuffleSplit & GroupKFold) supaya tidak ada kebocoran data.
- Eksperimen kedua: keenam algoritma juga dilatih dan diuji hanya dengan data asli (1.209 baris, GroupKFold 5-fold per siklus pity), tab "Latih di data asli" di halaman Perbandingan Algoritma.
- Pembanding: baseline "selalu tebak tidak S" (membuktikan jebakan akurasi) dan Markov Chain (peluang teoretis).
Penjelasan lengkap untuk laporan ada di docs/LAPORAN.md.
- Pemain membuka aplikasi → Import Data → ambil riwayat.
- Klik Dataset anonim (.csv). File ini tanpa UID, nama item, dan waktu.
- Simpan file ke
data/real/, lalu jalankanpython scripts/train_models.py. - Commit
data/real/*.csvdan foldermodels/.
Semua angka ada di zzzgacha/config.py: rate, hard pity, soft pity, peluang
rate-up, dan daftar S standar. Setelah mengubahnya, latih ulang model dengan
python scripts/train_models.py dan jalankan python -m pytest -q.