hç commited on
Upload 4 files
Browse files
README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 📘 Proje Adı: Scrabble Oyuncu Derecesi Tahmin Modeli
|
| 2 |
+
|
| 3 |
+
## 🎯 Proje Amacı:
|
| 4 |
+
Bu proje, Kaggle üzerindeki "Scrabble Player Rating" yarışması kapsamında geliştirilmiştir. Amaç, bir Scrabble oyuncusunun yalnızca tek bir maç performansı kullanılarak oyun öncesi derecesini (rating) tahmin etmektir.
|
| 5 |
+
|
| 6 |
+
## 📦 Veri Seti:
|
| 7 |
+
Veri seti Woogles.io platformundan alınan yaklaşık 73.000 oyunu içermektedir. Her oyun iki oyuncunun:
|
| 8 |
+
- Skor bilgisi
|
| 9 |
+
- Nickname (bot veya insan)
|
| 10 |
+
- Rating değeri
|
| 11 |
+
- Game ID (eşleşme kimliği)
|
| 12 |
+
|
| 13 |
+
verilerini içermektedir. Ayrıca hamle düzeyinde ek veri olan `turns.csv` dosyası da bulunmaktadır.
|
| 14 |
+
|
| 15 |
+
## ⚙️ Kullanılan Yöntem:
|
| 16 |
+
- Veri ön işleme (negatif skor temizliği, bot kontrolü)
|
| 17 |
+
- Özellik mühendisliği (skor farkı, kazanan durumu, bot karşılaşması)
|
| 18 |
+
- Geniş veri formatında oyuncu eşleşmeleri oluşturuldu
|
| 19 |
+
- Model olarak `RandomForestRegressor` kullanıldı
|
| 20 |
+
- Performans metriği olarak RMSE: **215.77**
|
| 21 |
+
|
| 22 |
+
## 💡 Model Girdileri (Streamlit için):
|
| 23 |
+
- Player 1 Skoru
|
| 24 |
+
- Player 2 Skoru
|
| 25 |
+
- Player 1 Kazandı mı?
|
| 26 |
+
- Rakip Bot mu?
|
| 27 |
+
|
| 28 |
+
Bu bilgilerle model, `Player 1`'ın tahmini rating'ini üretir.
|
| 29 |
+
|
| 30 |
+
## 🧪 Örnek Girdi:
|
| 31 |
+
```json
|
| 32 |
+
{
|
| 33 |
+
"player1_score": 420,
|
| 34 |
+
"player2_score": 390,
|
| 35 |
+
"player1_is_winner": true,
|
| 36 |
+
"player1_vs_bot": false
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
📁 Çıktılar:
|
| 42 |
+
model.pkl: Eğitilmiş model
|
| 43 |
+
|
| 44 |
+
app.py: Streamlit arayüzü
|
| 45 |
+
|
| 46 |
+
requirements.txt: Gerekli kütüphaneler
|
| 47 |
+
|
| 48 |
+
sample_input.json: Örnek test girdisi
|
| 49 |
+
|
| 50 |
+
README.md: GitHub + Hugging Face dokümantasyonu
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
🚀 Geliştirme Fırsatları:
|
| 55 |
+
turns.csv kullanılarak hamle bazlı özellik mühendisliği yapılabilir
|
| 56 |
+
|
| 57 |
+
Model doğruluğu arttırmak için LightGBM veya XGBoost ile karşılaştırma yapılabilir
|
| 58 |
+
|
| 59 |
+
Oyunculara özel geçmiş bilgileriyle rating tahmini iyileştirilebilir
|
aciklama.txt
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 📘 Proje: Scrabble Oyuncu Derecesi Tahmin Modeli – BecomePro Görevi
|
| 2 |
+
|
| 3 |
+
## 📌 Proje Açıklaması (Türkçe)
|
| 4 |
+
|
| 5 |
+
Bu proje, Kaggle üzerindeki "Scrabble Player Rating" yarışması kapsamında geliştirilmiş bir makine öğrenmesi uygulamasıdır. Amaç, bir Scrabble oyuncusunun yalnızca tek bir oyun performansına dayanarak oyun öncesi derecesini (rating) tahmin etmektir. Model, oyuncunun skor bilgisi, rakibinin durumu (bot/insan), kazanan bilgisini ve skor farkını kullanarak rating tahmini yapar.
|
| 6 |
+
|
| 7 |
+
Kullanılan algoritma `RandomForestRegressor` olup, ortalama hata (RMSE) değeri ~215'tir. Veri temizliği, bot kontrolü ve özellik mühendisliği adımları uygulanmıştır. Sonuçta, model `.pkl` olarak kaydedilmiş ve kullanıcı arayüzü `Streamlit` ile geliştirilmiştir.
|
| 8 |
+
|
| 9 |
+
veri analizi, modelleme, uygulama ve dağıtım becerilerini sergilemek amacıyla yapılmıştır.
|
| 10 |
+
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
## 📌 Project Description (English)
|
| 14 |
+
|
| 15 |
+
This project is a machine learning application developed for the Kaggle competition “Scrabble Player Rating.” The objective is to predict a Scrabble player's pre-game rating based solely on a single match's performance data. The model uses features such as the player’s score, whether the opponent is a bot, the match outcome, and score difference.
|
| 16 |
+
|
| 17 |
+
The algorithm used is `RandomForestRegressor`, with an average prediction error (RMSE) of approximately 215. The project involves data cleaning, bot flagging, and feature engineering. The final model is saved as `.pkl`, and an interactive prediction interface is built using `Streamlit`.
|
| 18 |
+
|
| 19 |
+
This project was built as part of a BecomePro assignment to demonstrate data science, modeling, and deployment skills in a structured ML workflow.
|
app.py
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import streamlit as st
|
| 3 |
+
import joblib
|
| 4 |
+
import numpy as np
|
| 5 |
+
|
| 6 |
+
# Başlık
|
| 7 |
+
st.title("📊 Scrabble Oyuncu Derecesi Tahmin Uygulaması")
|
| 8 |
+
|
| 9 |
+
# Modeli yükle
|
| 10 |
+
model = joblib.load("model.pkl")
|
| 11 |
+
|
| 12 |
+
# Kullanıcıdan giriş verilerini al
|
| 13 |
+
st.header("🎮 Oyun Bilgilerini Girin")
|
| 14 |
+
|
| 15 |
+
player1_score = st.number_input("Player 1 Skoru", min_value=0, value=400)
|
| 16 |
+
player2_score = st.number_input("Player 2 Skoru", min_value=0, value=380)
|
| 17 |
+
player1_is_winner = st.selectbox("Player 1 Kazandı mı?", [True, False])
|
| 18 |
+
player1_vs_bot = st.selectbox("Rakip bot mu?", [True, False])
|
| 19 |
+
|
| 20 |
+
# Özellikleri hazırla
|
| 21 |
+
score_diff = player1_score - player2_score
|
| 22 |
+
features = np.array([[player1_score, player2_score, score_diff, int(player1_is_winner), int(player1_vs_bot)]])
|
| 23 |
+
|
| 24 |
+
# Tahmin
|
| 25 |
+
if st.button("Tahmin Et"):
|
| 26 |
+
prediction = model.predict(features)[0]
|
| 27 |
+
st.success(f"Tahmin Edilen Player 1 Rating: {int(prediction)}")
|
model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:be5e635be4286af5de8a50d2b1992f960d79f6456ad6bed02f3a288f87f0fd45
|
| 3 |
+
size 291496961
|